summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-x.ci/scripts/android/build.sh9
-rwxr-xr-x.ci/scripts/android/upload.sh13
-rw-r--r--.github/workflows/android-merge.js49
-rw-r--r--.github/workflows/android-publish.yml4
-rw-r--r--CMakeLists.txt2
-rw-r--r--dist/languages/ar.ts580
-rw-r--r--dist/languages/ca.ts564
-rw-r--r--dist/languages/cs.ts837
-rw-r--r--dist/languages/da.ts564
-rw-r--r--dist/languages/de.ts610
-rw-r--r--dist/languages/el.ts564
-rw-r--r--dist/languages/es.ts692
-rw-r--r--dist/languages/fr.ts592
-rw-r--r--dist/languages/hu.ts657
-rw-r--r--dist/languages/id.ts564
-rw-r--r--dist/languages/it.ts566
-rw-r--r--dist/languages/ja_JP.ts564
-rw-r--r--dist/languages/ko_KR.ts564
-rw-r--r--dist/languages/nb.ts564
-rw-r--r--dist/languages/nl.ts564
-rw-r--r--dist/languages/pl.ts566
-rw-r--r--dist/languages/pt_BR.ts657
-rw-r--r--dist/languages/pt_PT.ts657
-rw-r--r--dist/languages/ru_RU.ts564
-rw-r--r--dist/languages/sv.ts564
-rw-r--r--dist/languages/tr_TR.ts564
-rw-r--r--dist/languages/uk.ts564
-rw-r--r--dist/languages/vi.ts564
-rw-r--r--dist/languages/vi_VN.ts564
-rw-r--r--dist/languages/zh_CN.ts564
-rw-r--r--dist/languages/zh_TW.ts566
m---------externals/Vulkan-Headers0
-rw-r--r--src/android/app/build.gradle.kts2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt7
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt55
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt75
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt124
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt3
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt5
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt987
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt3
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.kt4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControl.kt188
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlData.kt19
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlDefault.kt13
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayLayout.kt10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt3
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt175
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt50
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt18
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PreferenceUtil.kt37
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt38
-rw-r--r--src/android/app/src/main/jni/android_common/android_common.cpp9
-rw-r--r--src/android/app/src/main/jni/android_common/android_common.h3
-rw-r--r--src/android/app/src/main/jni/android_config.cpp73
-rw-r--r--src/android/app/src/main/jni/android_config.h3
-rw-r--r--src/android/app/src/main/jni/android_settings.h30
-rw-r--r--src/android/app/src/main/jni/id_cache.cpp79
-rw-r--r--src/android/app/src/main/jni/id_cache.h12
-rw-r--r--src/android/app/src/main/jni/native_config.cpp70
-rw-r--r--src/android/app/src/main/res/layout/list_item_setting_switch.xml2
-rw-r--r--src/android/app/src/main/res/menu/menu_overlay_options.xml5
-rw-r--r--src/android/app/src/main/res/values/arrays.xml39
-rw-r--r--src/android/app/src/main/res/values/integers.xml204
-rw-r--r--src/android/app/src/main/res/values/strings.xml15
-rw-r--r--src/android/build.gradle.kts2
-rw-r--r--src/audio_core/device/device_session.cpp4
-rw-r--r--src/common/CMakeLists.txt2
-rw-r--r--src/common/assert.cpp3
-rw-r--r--src/common/heap_tracker.cpp281
-rw-r--r--src/common/heap_tracker.h98
-rw-r--r--src/common/host_memory.cpp10
-rw-r--r--src/common/host_memory.h11
-rw-r--r--src/common/logging/backend.cpp17
-rw-r--r--src/common/logging/backend.h3
-rw-r--r--src/common/ring_buffer.h2
-rw-r--r--src/common/settings.cpp2
-rw-r--r--src/common/settings_common.h1
-rw-r--r--src/core/CMakeLists.txt23
-rw-r--r--src/core/arm/arm_interface.cpp2
-rw-r--r--src/core/arm/arm_interface.h2
-rw-r--r--src/core/arm/debug.cpp14
-rw-r--r--src/core/arm/debug.h6
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.cpp49
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.h20
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp11
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.h2
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp11
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.h2
-rw-r--r--src/core/arm/nce/arm_nce.cpp2
-rw-r--r--src/core/arm/nce/interpreter_visitor.cpp5
-rw-r--r--src/core/arm/nce/visitor_base.h6
-rw-r--r--src/core/core.cpp73
-rw-r--r--src/core/core.h13
-rw-r--r--src/core/core_timing.cpp48
-rw-r--r--src/core/core_timing.h27
-rw-r--r--src/core/file_sys/ips_layer.cpp7
-rw-r--r--src/core/file_sys/program_metadata.cpp6
-rw-r--r--src/core/file_sys/program_metadata.h13
-rw-r--r--src/core/hid/hid_types.h1
-rw-r--r--src/core/hle/kernel/k_address_arbiter.cpp19
-rw-r--r--src/core/hle/kernel/k_auto_object_container.cpp9
-rw-r--r--src/core/hle/kernel/k_auto_object_container.h31
-rw-r--r--src/core/hle/kernel/k_capabilities.cpp6
-rw-r--r--src/core/hle/kernel/k_client_port.cpp5
-rw-r--r--src/core/hle/kernel/k_condition_variable.cpp8
-rw-r--r--src/core/hle/kernel/k_handle_table.h3
-rw-r--r--src/core/hle/kernel/k_hardware_timer.cpp19
-rw-r--r--src/core/hle/kernel/k_page_table_base.cpp26
-rw-r--r--src/core/hle/kernel/k_page_table_base.h3
-rw-r--r--src/core/hle/kernel/k_process.cpp56
-rw-r--r--src/core/hle/kernel/k_process.h15
-rw-r--r--src/core/hle/kernel/k_server_session.cpp1424
-rw-r--r--src/core/hle/kernel/k_server_session.h15
-rw-r--r--src/core/hle/kernel/k_session.cpp3
-rw-r--r--src/core/hle/kernel/k_thread.cpp11
-rw-r--r--src/core/hle/kernel/k_thread.h6
-rw-r--r--src/core/hle/kernel/k_transfer_memory.h1
-rw-r--r--src/core/hle/kernel/kernel.cpp36
-rw-r--r--src/core/hle/kernel/kernel.h7
-rw-r--r--src/core/hle/kernel/message_buffer.h20
-rw-r--r--src/core/hle/kernel/svc/svc_info.cpp1
-rw-r--r--src/core/hle/kernel/svc/svc_ipc.cpp6
-rw-r--r--src/core/hle/kernel/svc_results.h2
-rw-r--r--src/core/hle/service/am/am.cpp12
-rw-r--r--src/core/hle/service/audio/audren_u.cpp6
-rw-r--r--src/core/hle/service/audio/hwopus.cpp16
-rw-r--r--src/core/hle/service/fatal/fatal.cpp2
-rw-r--r--src/core/hle/service/hid/controllers/applet_resource.cpp18
-rw-r--r--src/core/hle/service/hid/controllers/applet_resource.h95
-rw-r--r--src/core/hle/service/hid/controllers/capture_button.cpp39
-rw-r--r--src/core/hle/service/hid/controllers/capture_button.h (renamed from src/core/hle/service/hid/controllers/stubbed.h)8
-rw-r--r--src/core/hle/service/hid/controllers/console_six_axis.cpp16
-rw-r--r--src/core/hle/service/hid/controllers/console_six_axis.h6
-rw-r--r--src/core/hle/service/hid/controllers/controller_base.cpp7
-rw-r--r--src/core/hle/service/hid/controllers/controller_base.h10
-rw-r--r--src/core/hle/service/hid/controllers/debug_mouse.cpp64
-rw-r--r--src/core/hle/service/hid/controllers/debug_mouse.h34
-rw-r--r--src/core/hle/service/hid/controllers/debug_pad.cpp17
-rw-r--r--src/core/hle/service/hid/controllers/debug_pad.h6
-rw-r--r--src/core/hle/service/hid/controllers/digitizer.cpp39
-rw-r--r--src/core/hle/service/hid/controllers/digitizer.h27
-rw-r--r--src/core/hle/service/hid/controllers/gesture.cpp43
-rw-r--r--src/core/hle/service/hid/controllers/gesture.h5
-rw-r--r--src/core/hle/service/hid/controllers/home_button.cpp39
-rw-r--r--src/core/hle/service/hid/controllers/home_button.h27
-rw-r--r--src/core/hle/service/hid/controllers/keyboard.cpp17
-rw-r--r--src/core/hle/service/hid/controllers/keyboard.h6
-rw-r--r--src/core/hle/service/hid/controllers/mouse.cpp16
-rw-r--r--src/core/hle/service/hid/controllers/mouse.h5
-rw-r--r--src/core/hle/service/hid/controllers/npad.cpp1003
-rw-r--r--src/core/hle/service/hid/controllers/npad.h166
-rw-r--r--src/core/hle/service/hid/controllers/npad/npad_data.cpp228
-rw-r--r--src/core/hle/service/hid/controllers/npad/npad_data.h88
-rw-r--r--src/core/hle/service/hid/controllers/npad/npad_resource.cpp685
-rw-r--r--src/core/hle/service/hid/controllers/npad/npad_resource.h132
-rw-r--r--src/core/hle/service/hid/controllers/shared_memory_holder.cpp3
-rw-r--r--src/core/hle/service/hid/controllers/six_axis.cpp25
-rw-r--r--src/core/hle/service/hid/controllers/sleep_button.cpp39
-rw-r--r--src/core/hle/service/hid/controllers/sleep_button.h27
-rw-r--r--src/core/hle/service/hid/controllers/stubbed.cpp31
-rw-r--r--src/core/hle/service/hid/controllers/touchscreen.cpp17
-rw-r--r--src/core/hle/service/hid/controllers/touchscreen.h4
-rw-r--r--src/core/hle/service/hid/controllers/types/npad_types.h3
-rw-r--r--src/core/hle/service/hid/controllers/types/shared_memory_format.h (renamed from src/core/hle/service/hid/controllers/shared_memory_format.h)2
-rw-r--r--src/core/hle/service/hid/controllers/unique_pad.cpp38
-rw-r--r--src/core/hle/service/hid/controllers/unique_pad.h27
-rw-r--r--src/core/hle/service/hid/errors.h32
-rw-r--r--src/core/hle/service/hid/hid.cpp1
-rw-r--r--src/core/hle/service/hid/hid_server.cpp233
-rw-r--r--src/core/hle/service/hid/hid_system_server.cpp38
-rw-r--r--src/core/hle/service/hid/hid_util.h8
-rw-r--r--src/core/hle/service/hid/hidbus.cpp11
-rw-r--r--src/core/hle/service/hid/hidbus.h2
-rw-r--r--src/core/hle/service/hid/irs.cpp8
-rw-r--r--src/core/hle/service/hid/resource_manager.cpp161
-rw-r--r--src/core/hle/service/hid/resource_manager.h28
-rw-r--r--src/core/hle/service/hle_ipc.cpp20
-rw-r--r--src/core/hle/service/hle_ipc.h20
-rw-r--r--src/core/hle/service/ipc_helpers.h4
-rw-r--r--src/core/hle/service/jit/jit.cpp69
-rw-r--r--src/core/hle/service/jit/jit_code_memory.cpp54
-rw-r--r--src/core/hle/service/jit/jit_code_memory.h49
-rw-r--r--src/core/hle/service/nvnflinger/nvnflinger.cpp8
-rw-r--r--src/core/hle/service/ro/ro.cpp12
-rw-r--r--src/core/hle/service/server_manager.cpp21
-rw-r--r--src/core/hle/service/service.cpp2
-rw-r--r--src/core/hle/service/set/set_sys.cpp12
-rw-r--r--src/core/hle/service/set/set_sys.h1
-rw-r--r--src/core/hle/service/sm/sm.cpp36
-rw-r--r--src/core/hle/service/sm/sm.h8
-rw-r--r--src/core/hle/service/sm/sm_controller.cpp7
-rw-r--r--src/core/loader/deconstructed_rom_directory.cpp7
-rw-r--r--src/core/memory.cpp114
-rw-r--r--src/core/memory.h10
-rw-r--r--src/core/memory/cheat_engine.cpp8
-rw-r--r--src/core/memory/cheat_engine.h2
-rw-r--r--src/core/tools/freezer.cpp17
-rw-r--r--src/core/tools/freezer.h2
-rw-r--r--src/frontend_common/config.cpp184
-rw-r--r--src/frontend_common/config.h39
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp5
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_image.cpp22
-rw-r--r--src/shader_recompiler/backend/spirv/spirv_emit_context.cpp81
-rw-r--r--src/shader_recompiler/backend/spirv/spirv_emit_context.h2
-rw-r--r--src/shader_recompiler/environment.h2
-rw-r--r--src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp6
-rw-r--r--src/shader_recompiler/ir_opt/constant_propagation_pass.cpp12
-rw-r--r--src/shader_recompiler/ir_opt/texture_pass.cpp25
-rw-r--r--src/shader_recompiler/profile.h2
-rw-r--r--src/shader_recompiler/shader_info.h107
-rw-r--r--src/tests/common/host_memory.cpp99
-rw-r--r--src/tests/core/core_timing.cpp14
-rw-r--r--src/video_core/engines/maxwell_3d.cpp24
-rw-r--r--src/video_core/engines/maxwell_dma.cpp4
-rw-r--r--src/video_core/macro/macro_hle.cpp7
-rw-r--r--src/video_core/query_cache.h39
-rw-r--r--src/video_core/rasterizer_interface.h8
-rw-r--r--src/video_core/renderer_opengl/gl_buffer_cache.cpp11
-rw-r--r--src/video_core/renderer_opengl/gl_buffer_cache.h5
-rw-r--r--src/video_core/renderer_opengl/gl_query_cache.cpp23
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp54
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h9
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.cpp17
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.h27
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp3
-rw-r--r--src/video_core/renderer_vulkan/vk_buffer_cache.cpp63
-rw-r--r--src/video_core/renderer_vulkan/vk_buffer_cache.h2
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp3
-rw-r--r--src/video_core/renderer_vulkan/vk_present_manager.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_query_cache.cpp9
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp4
-rw-r--r--src/video_core/shader_environment.cpp35
-rw-r--r--src/video_core/shader_environment.h6
-rw-r--r--src/video_core/texture_cache/decode_bc.cpp50
-rw-r--r--src/video_core/texture_cache/decode_bc.h2
-rw-r--r--src/video_core/texture_cache/util.cpp16
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp21
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h4
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp6
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp94
-rw-r--r--src/yuzu/configuration/configure_graphics.h4
-rw-r--r--src/yuzu/configuration/qt_config.cpp69
-rw-r--r--src/yuzu/main.cpp4
-rw-r--r--src/yuzu/main.h8
-rw-r--r--src/yuzu/multiplayer/direct_connect.cpp2
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2.cpp2
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp3
-rw-r--r--src/yuzu_cmd/sdl_config.cpp26
255 files changed, 15075 insertions, 10735 deletions
diff --git a/.ci/scripts/android/build.sh b/.ci/scripts/android/build.sh
index d135af029..98593017f 100755
--- a/.ci/scripts/android/build.sh
+++ b/.ci/scripts/android/build.sh
@@ -6,7 +6,12 @@
export NDK_CCACHE="$(which ccache)"
ccache -s
-BUILD_FLAVOR=mainline
+BUILD_FLAVOR="mainline"
+
+BUILD_TYPE="release"
+if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
+ BUILD_TYPE="relWithDebInfo"
+fi
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
@@ -15,7 +20,7 @@ fi
cd src/android
chmod +x ./gradlew
-./gradlew "assemble${BUILD_FLAVOR}Release" "bundle${BUILD_FLAVOR}Release"
+./gradlew "assemble${BUILD_FLAVOR}${BUILD_TYPE}" "bundle${BUILD_FLAVOR}${BUILD_TYPE}"
ccache -s
diff --git a/.ci/scripts/android/upload.sh b/.ci/scripts/android/upload.sh
index 5f8ca73c0..26b1a7efa 100755
--- a/.ci/scripts/android/upload.sh
+++ b/.ci/scripts/android/upload.sh
@@ -7,9 +7,16 @@
REV_NAME="yuzu-${GITDATE}-${GITREV}"
-BUILD_FLAVOR=mainline
+BUILD_FLAVOR="mainline"
-cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/release/app-${BUILD_FLAVOR}-release.apk" \
+BUILD_TYPE_LOWER="release"
+BUILD_TYPE_UPPER="Release"
+if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
+ BUILD_TYPE_LOWER="relWithDebInfo"
+ BUILD_TYPE_UPPER="RelWithDebInfo"
+fi
+
+cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
"artifacts/${REV_NAME}.apk"
-cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}Release"/"app-${BUILD_FLAVOR}-release.aab" \
+cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
"artifacts/${REV_NAME}.aab"
diff --git a/.github/workflows/android-merge.js b/.github/workflows/android-merge.js
index 7e02dc9e5..44ab56e44 100644
--- a/.github/workflows/android-merge.js
+++ b/.github/workflows/android-merge.js
@@ -10,7 +10,7 @@ const CHANGE_LABEL = 'android-merge';
// how far back in time should we consider the changes are "recent"? (default: 24 hours)
const DETECTION_TIME_FRAME = (parseInt(process.env.DETECTION_TIME_FRAME)) || (24 * 3600 * 1000);
-async function checkBaseChanges(github, context) {
+async function checkBaseChanges(github) {
// query the commit date of the latest commit on this branch
const query = `query($owner:String!, $name:String!, $ref:String!) {
repository(name:$name, owner:$owner) {
@@ -22,8 +22,8 @@ async function checkBaseChanges(github, context) {
}
}`;
const variables = {
- owner: context.repo.owner,
- name: context.repo.repo,
+ owner: 'yuzu-emu',
+ name: 'yuzu',
ref: 'refs/heads/master',
};
const result = await github.graphql(query, variables);
@@ -38,8 +38,8 @@ async function checkBaseChanges(github, context) {
return false;
}
-async function checkAndroidChanges(github, context) {
- if (checkBaseChanges(github, context)) return true;
+async function checkAndroidChanges(github) {
+ if (checkBaseChanges(github)) return true;
const query = `query($owner:String!, $name:String!, $label:String!) {
repository(name:$name, owner:$owner) {
pullRequests(labels: [$label], states: OPEN, first: 100) {
@@ -48,8 +48,8 @@ async function checkAndroidChanges(github, context) {
}
}`;
const variables = {
- owner: context.repo.owner,
- name: context.repo.repo,
+ owner: 'yuzu-emu',
+ name: 'yuzu',
label: CHANGE_LABEL,
};
const result = await github.graphql(query, variables);
@@ -90,8 +90,8 @@ async function tagAndPush(github, owner, repo, execa, commit=false) {
console.log(`New tag: ${newTag}`);
if (commit) {
let channelName = channel[0].toUpperCase() + channel.slice(1);
- console.info(`Committing pending commit as ${channelName} #${tagNumber + 1}`);
- await execa("git", ['commit', '-m', `${channelName} #${tagNumber + 1}`]);
+ console.info(`Committing pending commit as ${channelName} ${tagNumber + 1}`);
+ await execa("git", ['commit', '-m', `${channelName} ${tagNumber + 1}`]);
}
console.info('Pushing tags to GitHub ...');
await execa("git", ['tag', newTag]);
@@ -157,7 +157,7 @@ async function mergePullRequests(pulls, execa) {
process1.stdout.pipe(process.stdout);
await process1;
- const process2 = execa("git", ["commit", "-m", `Merge PR ${pr}`]);
+ const process2 = execa("git", ["commit", "-m", `Merge yuzu-emu#${pr}`]);
process2.stdout.pipe(process.stdout);
await process2;
@@ -182,7 +182,30 @@ async function mergePullRequests(pulls, execa) {
return mergeResults;
}
+async function resetBranch(execa) {
+ console.log("::group::Reset master branch");
+ let hasFailed = false;
+ try {
+ await execa("git", ["remote", "add", "source", "https://github.com/yuzu-emu/yuzu.git"]);
+ await execa("git", ["fetch", "source"]);
+ const process1 = await execa("git", ["rev-parse", "source/master"]);
+ const headCommit = process1.stdout;
+
+ await execa("git", ["reset", "--hard", headCommit]);
+ } catch (err) {
+ console.log(`::error title=Failed to reset master branch`);
+ hasFailed = true;
+ }
+ console.log("::endgroup::");
+ if (hasFailed) {
+ throw 'Failed to reset the master branch. Aborting!';
+ }
+}
+
async function mergebot(github, context, execa) {
+ // Reset our local copy of master to what appears on yuzu-emu/yuzu - master
+ await resetBranch(execa);
+
const query = `query ($owner:String!, $name:String!, $label:String!) {
repository(name:$name, owner:$owner) {
pullRequests(labels: [$label], states: OPEN, first: 100) {
@@ -193,8 +216,8 @@ async function mergebot(github, context, execa) {
}
}`;
const variables = {
- owner: context.repo.owner,
- name: context.repo.repo,
+ owner: 'yuzu-emu',
+ name: 'yuzu',
label: CHANGE_LABEL,
};
const result = await github.graphql(query, variables);
@@ -209,7 +232,7 @@ async function mergebot(github, context, execa) {
await fetchPullRequests(pulls, "https://github.com/yuzu-emu/yuzu", execa);
const mergeResults = await mergePullRequests(pulls, execa);
await generateReadme(pulls, context, mergeResults, execa);
- await tagAndPush(github, context.repo.owner, `${context.repo.repo}-android`, execa, true);
+ await tagAndPush(github, 'yuzu-emu', `yuzu-android`, execa, true);
}
module.exports.mergebot = mergebot;
diff --git a/.github/workflows/android-publish.yml b/.github/workflows/android-publish.yml
index 8f46fcf74..68e21c2f2 100644
--- a/.github/workflows/android-publish.yml
+++ b/.github/workflows/android-publish.yml
@@ -16,7 +16,7 @@ on:
jobs:
android:
runs-on: ubuntu-latest
- if: ${{ github.event.inputs.android != 'false' && github.repository == 'yuzu-emu/yuzu' }}
+ if: ${{ github.event.inputs.android != 'false' && github.repository == 'yuzu-emu/yuzu-android' }}
steps:
# this checkout is required to make sure the GitHub Actions scripts are available
- uses: actions/checkout@v3
@@ -33,7 +33,7 @@ jobs:
script: |
if (context.payload.inputs && context.payload.inputs.android === 'true') return true;
const checkAndroidChanges = require('./.github/workflows/android-merge.js').checkAndroidChanges;
- return checkAndroidChanges(github, context);
+ return checkAndroidChanges(github);
- run: npm install execa@5
if: ${{ steps.check-changes.outputs.result == 'true' }}
- uses: actions/checkout@v3
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9dfc06ac3..7cd6b2108 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -305,7 +305,7 @@ find_package(ZLIB 1.2 REQUIRED)
find_package(zstd 1.5 REQUIRED)
if (NOT YUZU_USE_EXTERNAL_VULKAN_HEADERS)
- find_package(Vulkan 1.3.256 REQUIRED)
+ find_package(Vulkan 1.3.274 REQUIRED)
endif()
if (ENABLE_LIBUSB)
diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts
index 427d35b2c..ba991921a 100644
--- a/dist/languages/ar.ts
+++ b/dist/languages/ar.ts
@@ -425,7 +425,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>:الخلفية</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -845,7 +845,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -955,7 +955,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="285"/>
<source>AMD FidelityFX™️ Super Resolution</source>
- <translation type="unfinished"/>
+ <translation>AMD FidelityFX™️ Super Resolution</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="289"/>
@@ -1864,7 +1864,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2099,7 +2099,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="31"/>
<source>NAND</source>
- <translation>الذاكرة الداخلية</translation>
+ <translation>NAND</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="38"/>
@@ -2163,12 +2163,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="201"/>
<source>Caching</source>
- <translation>الذاكرة المؤقتة</translation>
+ <translation>التخزين المؤقت</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="209"/>
<source>Cache Game List Metadata</source>
- <translation>تفعيل الذاكرة المؤقتة للبيانات الوصفية لقائمة الألعاب</translation>
+ <translation>ذاكرة التخزين المؤقت لقائمة البيانات الوصفية</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
@@ -2181,12 +2181,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="93"/>
<source>Select Emulated NAND Directory...</source>
- <translation>أختر مسار محاكاة الذاكرة الداخلية</translation>
+ <translation>الذي تمت محاكاته NAND حدد مجلد</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="96"/>
<source>Select Emulated SD Directory...</source>
- <translation>أختر مسار محاكاة بطاقة الذاكرة</translation>
+ <translation>حدد مجلد بطاقة الذاكرة الذي تمت محاكاته</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="99"/>
@@ -2281,33 +2281,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>:لون الخلفية</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>معطل</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync معطل</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>مستحسن</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>مفعل</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync مفعل</translation>
</message>
@@ -4815,970 +4815,970 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>تشغيل لعبة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>جارٍ تحميل برنامج الويب...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>تعطيل برنامج الويب</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>كمية التظليل التي يتم بناؤها حاليا</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>مضاعف قياس الدقة المحدد الحالي.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>سرعة المحاكاة الحالية. تشير القيم الأعلى أو الأقل من 100% إلى أن المحاكاة تعمل بشكل أسرع أو أبطأ من سويتش.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>كم عدد الإطارات في الثانية التي تعرضها اللعبة حاليًا. سيختلف هذا من لعبة إلى أخرى ومن مشهد إلى آخر.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>إلغاء الكتم</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>كتم</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>إعادة ضبط مستوى الصوت</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;مسح الملفات الحديثة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;استأنف</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;إيقاف مؤقت</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>تحذير من تنسيق اللعبة القديم</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>ROM خطأ أثناء تحميل </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>غير مدعوم ROM تنسيق.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>حدث خطأ أثناء تهيئة مركز الفيديو.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>حدث خطأ غير معروف. يرجى الاطلاع على السجل لمزيد من التفاصيل.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>إغلاق البرامج</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>حفظ البيانات</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>%1 حدث خطأ أثناء فتح المجلد</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>المجلد غير موجود</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>فشل إنشاء مجلد ذاكرة التخزين المؤقت للتظليل لهذا العنوان.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>خطأ في إزالة المحتويات</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>خطأ في إزالة التحديث</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>DLC خطأ في إزالة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>هل تريد إزالة محتويات اللعبة المثبتة؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>هل تريد إزالة تحديث اللعبة المثبت؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>للعبة المثبتة؟ DLC إزالة المحتوى القابل للتنزيل</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>إزالة الإدخال</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>تمت الإزالة بنجاح</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>تمت إزالة اللعبة الأساسية المثبتة بنجاح.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>تمت إزالة التحديث المثبت بنجاح.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>لا يوجد تحديث مثبت لهذا العنوان.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>مثبت لهذا العنوان DLC لا يوجد أي محتوى قابل للتنزيل.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>إزالة تكوين اللعبة المخصصة؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>إزالة تخزين ذاكرة التخزين المؤقت؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>إزالة الملف</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>إزالة بيانات زمن اللعب</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>إعادة تعيين زمن اللعب؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>حدث خطأ أثناء إزالة التكوين المخصص</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>لا يوجد تكوين مخصص لهذا العنوان.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>تمت إزالة تكوين اللعبة المخصص بنجاح.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>فشل إزالة تكوين اللعبة المخصص.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>كامل</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>إلغاء</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>أكتملت العملية بنجاح</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>لا يمكن إجراء التحقق من سلامة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>لم يتم التحقق من صحة محتويات الملف.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>فشل التحقق من سلامة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>قد تكون محتويات الملف تالفة.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>التحقق من سلامة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>نجح التحقق من سلامة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>إنشاء إختصار</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>%1 تم إنشاء اختصار بنجاح إلى</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>إنشاء أيقونة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>%1 خطأ في فتح</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>حدد المجلد</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>خصائص</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>تعذر تحميل خصائص اللعبة.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>تشغيل المِلَفّ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>تم تحديد مجلد غير صالح</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>تثبيت الملفات</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot; تثبيت الملف</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>تثبيت النتائج</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>تطبيق النظام</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>أرشيف النظام</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>تحديث تطبيق النظام</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>اللعبة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>تحديث اللعبة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>فشل فى التثبيت</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>لم يتم العثور على الملف</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>موافق</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>لم يتم استيفاء متطلبات الأجهزة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>لا يلبي نظامك متطلبات الأجهزة الموصى بها. تم تعطيل الإبلاغ عن التوافق.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>حساب يوزو مفقود</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>خطأ في فتح URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>الكتابة فوق ملف اللاعب 1؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>تم اكتشاف تكوين غير صالح</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>أميبو</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>أميبو اللعبة الحالية تمت إزالته</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>خطأ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>اللعبة الحالية لا تبحث عن أميبو</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>تحميل أميبو</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>خطأ أثناء تحميل بيانات أميبو</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>الملف المحدد ليس ملف أميبو صالحًا</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>الملف المحدد قيد الاستخدام بالفعل</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>حدث خطأ غير معروف</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>لا توجد برامج ثابتة متاحة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>الرجاء تثبيت البرنامج الثابت لاستخدام التطبيق الصغير للألبوم.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>التطبيق الصغير للألبوم</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>التطبيق الصغير للألبوم غير متوفر. الرجاء إعادة تثبيت البرامج الثابتة.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>الرجاء تثبيت البرنامج الثابت لاستخدام برنامج الخزانة.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>التطبيق الصغير للخزانة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>التطبيق الصغير للخزانة غير متوفر. الرجاء إعادة تثبيت البرامج الثابتة.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Mii الرجاء تثبيت البرنامج الثابت لاستخدام محرر</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii تحرير التطبيق الصغير</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>تطبيق التحكم</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>قائمة التحكم غير متوفرة. الرجاء إعادة تثبيت فريموير</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>لقطة شاشة</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;إيقاف التشغيل</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;بدء</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>&amp;إيقاف التسجيل</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>&amp;تسجيل</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>الصوت: كتم الصوت</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5789,86 +5789,86 @@ 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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>فشل فك تشفير أرشيف النظام</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>هل أنت متأكد أنك تريد إغلاق يوزو؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>يوزو</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6380,11 +6380,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>كتم الصوت/إلغاء كتم الصوت</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6407,117 +6408,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>النافذة الرئيسية</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>خفض مستوى الصوت</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>رفع مستوى الصوت</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>لقطة شاشة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>تغيير وضع الإرساء</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>استأنف/إيقاف مؤقت للمحاكاة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>الخروج من وضع ملء الشاشة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>الخروج من يوزو</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>ملء الشاشة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>تحميل الملف</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>تحميل/إزالة أميبو</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>إعادة تشغيل المحاكاة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>إيقاف المحاكاة</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>تبديل حد معدل الإطارات</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>تبديل شريط الحالة</translation>
</message>
@@ -8082,7 +8082,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8090,78 +8090,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>المستخدمين</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>منشئ الملف الشخصي</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>محدد الملف الشخصي</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>محرر أيقونة الملف الشخصي</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>محرر الاسم المستعار للملف الشخصي</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>من سيحصل على النقاط؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation> ؟Nintendo eShop من يستخدم</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>من يقوم بهذا الشراء؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>من ينشر؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Nintendo حدد مستخدمًا لربطه بحساب</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>تغيير الإعدادات لأي مستخدم؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>تنسيق البيانات لأي مستخدم؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>من هو المستخدم الذي سيتم نقله إلى وحدة تحكم أخرى؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>إرسال حفظ البيانات لأي مستخدم؟</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>:اختر مستخدم</translation>
</message>
diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts
index 174dc5d1f..afa32debf 100644
--- a/dist/languages/ca.ts
+++ b/dist/languages/ca.ts
@@ -1891,7 +1891,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2308,33 +2308,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Color de fons:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Apagat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Vsync Apagat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Recomanat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Encés</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync Encés</translation>
</message>
@@ -4843,575 +4843,575 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Carregant Web applet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Desactivar el Web Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Desactivar l&apos;Applet Web pot provocar comportaments indefinits i només hauria d&apos;utilitzar-se amb Super Mario 3D All-Stars. Estàs segur de que vols desactivar l&apos;Applet Web?
(Això pot ser reactivat als paràmetres Debug.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>La quantitat de shaders que s&apos;estan compilant actualment</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>El multiplicador d&apos;escala de resolució seleccionat actualment.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Velocitat d&apos;emulació actual. Valors superiors o inferiors a 100% indiquen que l&apos;emulació s&apos;està executant més ràpidament o més lentament que a la Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Quants fotogrames per segon està mostrant el joc actualment. Això variarà d&apos;un joc a un altre i d&apos;una escena a una altra.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Esborrar arxius recents</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Advertència format del joc desfasat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Error carregant la ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>S&apos;està tancant el programari</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Dades de partides guardades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dades de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Error obrint la carpeta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>La carpeta no existeix!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Error eliminant continguts</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Error eliminant actualització</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Error eliminant DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Eliminar entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>S&apos;ha eliminat correctament</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Desitja eliminar la configuració personalitzada del joc?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Eliminar arxiu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Error eliminant la configuració personalitzada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>La extracció de RomFS ha fallat!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Esquelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Seleccioni el mode de bolcat de RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extraient RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Cancel·la</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extracció de RomFS completada correctament!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<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="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Error obrint %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Seleccionar directori</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Propietats</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Carregar arxiu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Obrir el directori de la ROM extreta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Directori seleccionat invàlid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Instal·lar arxius</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instal·lant arxiu &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Resultats instal·lació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n nou(s) arxiu(s) s&apos;ha(n) instal·lat
@@ -5419,7 +5419,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n arxiu(s) s&apos;han sobreescrit
@@ -5427,7 +5427,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n arxiu(s) no s&apos;han instal·lat
@@ -5435,387 +5435,387 @@ 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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplicació del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Arxiu del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Actualització de l&apos;aplicació del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Paquet de firmware (Tipus A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Paquet de firmware (Tipus B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Actualització de joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC del joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Títol delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Ha fallat la instal·lació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Arxiu no trobat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>D&apos;acord</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Falta el compte de yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Error obrint URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Gravació TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<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="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Configuració invàlida detectada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>L&apos;amiibo actual ha sigut eliminat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>El joc actual no està buscant amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arxiu Amiibo (%1);; Tots els Arxius (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<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="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Controlador Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Imatge PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Estat TAS: executant %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Estat TAS: gravant %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Estat TAS: inactiu %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Estat TAS: invàlid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar l&apos;execució</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Parar g&amp;ravació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;ravar</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<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="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Velocitat: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Velocitat: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Joc: %1 FPS (desbloquejat)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Joc: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Fotograma: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>SENSE AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmi la clau de rederivació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5832,37 +5832,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Falten fusibles</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Falta BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Falta BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Falta PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Falten components de derivació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5871,49 +5871,49 @@ Això pot prendre fins a un minut depenent
del rendiment del seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Derivant claus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<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="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6425,11 +6425,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6452,117 +6453,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Pantalla Completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Carregar arxiu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -8124,7 +8124,7 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari.</tran
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8132,78 +8132,78 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari.</tran
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Usuaris</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Selector de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Seleccioni un usuari:</translation>
</message>
diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts
index 587794e0c..49fa7cf63 100644
--- a/dist/languages/cs.ts
+++ b/dist/languages/cs.ts
@@ -25,12 +25,18 @@ p, li { white-space: pre-wrap; }
&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 GPLv3.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 je experimentální open source emulátor pro konzoli Nintendo Switch licencován pod licencí GPLv3.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&gt;&lt;/span&gt;Tento emulátor by neměl být využíván pro hraní her které nevlastníte.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ <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 je experimentální open source emulátor pro konzoli Nintendo Switch licencován pod licencí GPLv3.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;Tento software by neměl být využíván pro hraní her, které nevlastníte.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/aboutdialog.ui" line="130"/>
<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 type="unfinished"/>
+ <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;Webové stránky&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;Zdrojový kód&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;Přispěvatelé&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;Licence&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="146"/>
@@ -81,12 +87,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.ui" line="40"/>
<source>Send Chat Message</source>
- <translation type="unfinished"/>
+ <translation>Odeslat Zprávu do Chatu</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.ui" line="47"/>
<source>Send Message</source>
- <translation type="unfinished"/>
+ <translation>Odeslat Zprávu</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="181"/>
@@ -96,7 +102,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="318"/>
<source>%1 has joined</source>
- <translation type="unfinished"/>
+ <translation>%1 se připojil</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="321"/>
@@ -106,28 +112,28 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="324"/>
<source>%1 has been kicked</source>
- <translation type="unfinished"/>
+ <translation>%1 byl vyhozen</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="327"/>
<source>%1 has been banned</source>
- <translation type="unfinished"/>
+ <translation>%1 byl zabanován</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="330"/>
<source>%1 has been unbanned</source>
- <translation type="unfinished"/>
+ <translation>%1 byl odbanován</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="446"/>
<source>View Profile</source>
- <translation type="unfinished"/>
+ <translation>Zobrazit Profil</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="459"/>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="469"/>
<source>Block Player</source>
- <translation type="unfinished"/>
+ <translation>Zablokovat Hráče</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="470"/>
@@ -137,17 +143,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="483"/>
<source>Kick</source>
- <translation type="unfinished"/>
+ <translation>Vyhodit</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="484"/>
<source>Ban</source>
- <translation type="unfinished"/>
+ <translation>Zabanovat</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="488"/>
<source>Kick Player</source>
- <translation type="unfinished"/>
+ <translation>Vyhodit Hráče</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="489"/>
@@ -157,7 +163,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="497"/>
<source>Ban Player</source>
- <translation type="unfinished"/>
+ <translation>Zabanovat Hráče</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="498"/>
@@ -177,7 +183,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/multiplayer/client_room.ui" line="27"/>
<source>Room Description</source>
- <translation type="unfinished"/>
+ <translation>Popis Místnosti</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/client_room.ui" line="47"/>
@@ -187,7 +193,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/multiplayer/client_room.ui" line="57"/>
<source>Leave Room</source>
- <translation type="unfinished"/>
+ <translation>Opustit Místnost</translation>
</message>
</context>
<context>
@@ -205,7 +211,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/multiplayer/client_room.cpp" line="100"/>
<source>%1 - %2 (%3/%4 members) - connected</source>
- <translation type="unfinished"/>
+ <translation>%1 - %2 (%3/%4 členů) - připojeno</translation>
</message>
</context>
<context>
@@ -372,17 +378,17 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="31"/>
<source>Output Device:</source>
- <translation type="unfinished"/>
+ <translation>Výstupní Zařízení:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="32"/>
<source>Input Device:</source>
- <translation type="unfinished"/>
+ <translation>Vstupní Zařízení:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="33"/>
<source>Mute audio</source>
- <translation type="unfinished"/>
+ <translation>Ztlumit zvuk</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="34"/>
@@ -392,7 +398,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="36"/>
<source>Mute audio when in background</source>
- <translation type="unfinished"/>
+ <translation>Ztlumit zvuk, když je aplikace v pozadí</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="40"/>
@@ -402,7 +408,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="41"/>
<source>Memory Layout</source>
- <translation type="unfinished"/>
+ <translation>Rozložení Paměti</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="43"/>
@@ -497,7 +503,7 @@ This would ban both their forum username and their IP address.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="82"/>
<source>Resolution:</source>
- <translation type="unfinished"/>
+ <translation>Rozlišení:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="83"/>
@@ -667,7 +673,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="145"/>
<source>Device Name</source>
- <translation type="unfinished"/>
+ <translation>Název Zařízení</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="146"/>
@@ -677,7 +683,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="148"/>
<source>Language:</source>
- <translation type="unfinished"/>
+ <translation>Jazyk:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="149"/>
@@ -717,7 +723,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="174"/>
<source>Confirm before stopping emulation</source>
- <translation type="unfinished"/>
+ <translation>Potvrzení před zastavením emulace</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="176"/>
@@ -797,17 +803,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="235"/>
<source>Normal</source>
- <translation type="unfinished"/>
+ <translation>Normální</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="236"/>
<source>High</source>
- <translation type="unfinished"/>
+ <translation>Vysoká</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="237"/>
<source>Extreme</source>
- <translation type="unfinished"/>
+ <translation>Extrémní</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="242"/>
@@ -927,7 +933,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="281"/>
<source>Bilinear</source>
- <translation type="unfinished"/>
+ <translation>Bilineární</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="282"/>
@@ -1107,7 +1113,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="330"/>
<source>Brazilian Portuguese (português do Brasil)</source>
- <translation type="unfinished"/>
+ <translation>Brazilská Portugalština (português do Brasil)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="334"/>
@@ -1415,7 +1421,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="417"/>
<source>Always ask (Default)</source>
- <translation type="unfinished"/>
+ <translation>Vždy se zeptat (Výchozí)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="418"/>
@@ -1457,7 +1463,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_camera.ui" line="71"/>
<source>Input device:</source>
- <translation type="unfinished"/>
+ <translation>Vstupní zařízení:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_camera.ui" line="96"/>
@@ -1467,7 +1473,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_camera.ui" line="108"/>
<source>Resolution: 320*240</source>
- <translation type="unfinished"/>
+ <translation>Rozlišení: 320*240</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_camera.ui" line="115"/>
@@ -1877,7 +1883,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2013,7 +2019,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure.ui" line="67"/>
<source>Some settings are only available when a game is not running.</source>
- <translation type="unfinished"/>
+ <translation>Některá nastavení jsou dostupná pouze, pokud hra neběží.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="61"/>
@@ -2294,33 +2300,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Barva Pozadí:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -2416,7 +2422,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="330"/>
<source>An error occurred. Please report this issue on github.</source>
- <translation type="unfinished"/>
+ <translation>Došlo k chybě. Nahlaste prosím tento problém na githubu.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="370"/>
@@ -2795,7 +2801,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2742"/>
<source>Use random Amiibo ID</source>
- <translation type="unfinished"/>
+ <translation>Použít náhodné Amiibo ID</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2749"/>
@@ -2818,47 +2824,47 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="28"/>
<source>Input Profiles</source>
- <translation type="unfinished"/>
+ <translation>Profily Vstupu</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="49"/>
<source>Player 1 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="84"/>
<source>Player 2 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 2</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="119"/>
<source>Player 3 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 3</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="154"/>
<source>Player 4 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 4</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="189"/>
<source>Player 5 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 5</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="224"/>
<source>Player 6 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 6</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="259"/>
<source>Player 7 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 7</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.ui" line="294"/>
<source>Player 8 Profile</source>
- <translation type="unfinished"/>
+ <translation>Profil Hráče 8</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.cpp" line="35"/>
@@ -2868,7 +2874,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_input_per_game.cpp" line="47"/>
<source>Player %1 profile</source>
- <translation type="unfinished"/>
+ <translation>Profil hráče %1</translation>
</message>
</context>
<context>
@@ -3659,7 +3665,7 @@ Current values are %1% and %2% respectively.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_network.ui" line="34"/>
<source>Network Interface</source>
- <translation type="unfinished"/>
+ <translation>Síťové Rozhraní</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_network.cpp" line="15"/>
@@ -3717,7 +3723,7 @@ Current values are %1% and %2% respectively.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.ui" line="240"/>
<source>Some settings are only available when a game is not running.</source>
- <translation type="unfinished"/>
+ <translation>Některá nastavení jsou dostupná pouze, pokud hra neběží.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="67"/>
@@ -3752,7 +3758,7 @@ Current values are %1% and %2% respectively.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="73"/>
<source>Input Profiles</source>
- <translation type="unfinished"/>
+ <translation>Profily Vstupu</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="76"/>
@@ -3929,7 +3935,7 @@ Current values are %1% and %2% respectively.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="332"/>
<source>Delete this user? All of the user&apos;s save data will be deleted.</source>
- <translation type="unfinished"/>
+ <translation>Odstranit tohoto uživatele? Všechna jeho uložená data budou smazána.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="344"/>
@@ -4348,7 +4354,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="51"/>
<source>Filetype</source>
- <translation type="unfinished"/>
+ <translation>Typ souboru</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="52"/>
@@ -4358,7 +4364,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="53"/>
<source>Title Name</source>
- <translation type="unfinished"/>
+ <translation>Název Titulu</translation>
</message>
</context>
<context>
@@ -4401,7 +4407,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="82"/>
<source>Show Compatibility List</source>
- <translation type="unfinished"/>
+ <translation>Zobrazit Seznam Kompatibility</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="89"/>
@@ -4411,17 +4417,17 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="96"/>
<source>Show Size Column</source>
- <translation type="unfinished"/>
+ <translation>Zobrazit sloupec s Velikostí</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="103"/>
<source>Show File Types Column</source>
- <translation type="unfinished"/>
+ <translation>Zobrazit sloupec s Typem souborů</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="110"/>
<source>Show Play Time Column</source>
- <translation type="unfinished"/>
+ <translation>Zobrazit sloupec s Dobou hraní</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="119"/>
@@ -4471,7 +4477,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="240"/>
<source>Resolution:</source>
- <translation type="unfinished"/>
+ <translation>Rozlišení:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="146"/>
@@ -4500,7 +4506,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
<source>Press any controller button to vibrate the controller.</source>
- <translation type="unfinished"/>
+ <translation>Stiskni libovolné tlačítko ovladače pro zavibrování.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
@@ -4699,7 +4705,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="141"/>
<source>Unverified, please click Verify before saving configuration</source>
<comment>Tooltip</comment>
- <translation type="unfinished"/>
+ <translation>Neověřeno, klikni prosím na Ověřit před uložením konfigurace</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="147"/>
@@ -4711,7 +4717,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="164"/>
<source>Verified</source>
<comment>Tooltip</comment>
- <translation type="unfinished"/>
+ <translation>Ověřeno</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="169"/>
@@ -4748,12 +4754,12 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="14"/>
<source>Direct Connect</source>
- <translation type="unfinished"/>
+ <translation>Přímé Připojení</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="47"/>
<source>Server Address</source>
- <translation type="unfinished"/>
+ <translation>Adresa Serveru</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="54"/>
@@ -4763,7 +4769,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="64"/>
<source>Port</source>
- <translation type="unfinished"/>
+ <translation>Port</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="71"/>
@@ -4773,12 +4779,12 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="97"/>
<source>Nickname</source>
- <translation type="unfinished"/>
+ <translation>Přezdívka</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="111"/>
<source>Password</source>
- <translation type="unfinished"/>
+ <translation>Heslo</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.ui" line="153"/>
@@ -4791,7 +4797,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.cpp" line="121"/>
<source>Connecting</source>
- <translation type="unfinished"/>
+ <translation>Připojování</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/direct_connect.cpp" line="126"/>
@@ -4828,972 +4834,972 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Načítání Web Appletu...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Zakázat Web Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Počet aktuálně sestavovaných shaderů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Aktuální emulační rychlost. Hodnoty vyšší než 100% indikují, že emulace běží rychleji nebo pomaleji než na Switchi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Kolik snímků za sekundu aktuálně hra zobrazuje. Tohle závisí na hře od hry a scény od scény.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Č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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
- <translation type="unfinished"/>
+ <translation>Vypnout ztlumení</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
- <translation type="unfinished"/>
+ <translation>Ztlumit</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Vymazat poslední soubory</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Pokračovat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pauza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Varování Zastaralý Formát Hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Chyba při načítání ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
- <translation type="unfinished"/>
+ <translation>Ukončování softwaru...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Uložit data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Módovat Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Chyba otevírání složky %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Složka neexistuje!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Odebrat položku</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Úspěšně odebráno</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Úspěšně odebrána nainstalovaná aktualizace.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Odstranit vlastní konfiguraci hry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Odstranit soubor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
- <translation type="unfinished"/>
+ <translation>Odstranit data o době hraní</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
- <translation type="unfinished"/>
+ <translation>Resetovat dobu hraní?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<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="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Extrakce RomFS se nepovedla!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Plný</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Kostra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Vyber RomFS Dump Mode</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extrahuji RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extrakce RomFS se povedla!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Operace byla dokončena úspěšně.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
- <translation type="unfinished"/>
+ <translation>Ověřování integrity...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
- <translation type="unfinished"/>
+ <translation>Vytvořit Zástupce</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
- <translation type="unfinished"/>
+ <translation>Úspěšně vytvořen zástupce do %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
- <translation type="unfinished"/>
+ <translation>Nepodařilo se vytvořit zástupce do %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
- <translation type="unfinished"/>
+ <translation>Vytvořit Ikonu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Chyba při otevírání %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Vybraná Složka</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Vlastnosti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Načíst soubor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Otevřít složku s extrahovanou ROM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Vybraná složka je neplatná</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Instalovat Soubory</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalování souboru &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Výsledek instalace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systémová Aplikace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systémový archív</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systémový Update Aplikace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware-ový baliček (Typu A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-ový baliček (Typu B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Hra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Update Hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Herní DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Title</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Vyberte typ instalace NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Chyba v instalaci</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Soubor nenalezen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>Soubor &quot;%1&quot; nenalezen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Chybí účet yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Chyba při otevírání URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Zjištěno neplatné nastavení</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Soubor Amiibo (%1);; Všechny Soubory (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Načíst Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Chyba načítání Amiiba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
- <translation type="unfinished"/>
+ <translation>Není k dispozici žádný firmware</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet ovladače</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Pořídit Snímek Obrazovky</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG Image (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Budování: %n shader</numerusform><numerusform>Budování: %n shadery</numerusform><numerusform>Budování: %n shaderů</numerusform><numerusform>Budování: %n shaderů</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
- <translation type="unfinished"/>
+ <translation>Měřítko: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Rychlost: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Rychlost: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Hra: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
- <translation type="unfinished"/>
+ <translation>ŽÁDNÝ AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
- <translation type="unfinished"/>
+ <translation>HLASITOST: ZTLUMENO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
- <translation type="unfinished"/>
+ <translation>HLASITOST: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Potvďte Rederivaci Klíčů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5810,37 +5816,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Chybí Fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Chybí BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Chybí BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Chybí PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Chybé odvozené komponenty</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5849,49 +5855,49 @@ Tohle může zabrat až minutu
podle výkonu systému.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Derivuji Klíče</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Vyberte Cíl vypsaní RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5922,7 +5928,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="36"/>
<source>Bilinear</source>
- <translation type="unfinished"/>
+ <translation>Bilineární</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="37"/>
@@ -5952,17 +5958,17 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="51"/>
<source>Normal</source>
- <translation type="unfinished"/>
+ <translation>Normální</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="52"/>
<source>High</source>
- <translation type="unfinished"/>
+ <translation>Vysoká</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="53"/>
<source>Extreme</source>
- <translation type="unfinished"/>
+ <translation>Extrémní</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="57"/>
@@ -6095,7 +6101,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="557"/>
<source>Remove Play Time Data</source>
- <translation type="unfinished"/>
+ <translation>Odstranit data o době hraní</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="558"/>
@@ -6136,7 +6142,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="567"/>
<source>Verify Integrity</source>
- <translation type="unfinished"/>
+ <translation>Ověřit Integritu</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="568"/>
@@ -6151,7 +6157,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="572"/>
<source>Create Shortcut</source>
- <translation type="unfinished"/>
+ <translation>Vytvořit Zástupce</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="573"/>
@@ -6226,7 +6232,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="805"/>
<source>Play time</source>
- <translation type="unfinished"/>
+ <translation>Doba hraní</translation>
</message>
</context>
<context>
@@ -6249,17 +6255,17 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="152"/>
<source>Game can be played without issues.</source>
- <translation type="unfinished"/>
+ <translation>Hra může být hrána bez problémů.</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="153"/>
<source>Playable</source>
- <translation type="unfinished"/>
+ <translation>Hratelné</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="153"/>
<source>Game functions with minor graphical or audio glitches and is playable from start to finish.</source>
- <translation type="unfinished"/>
+ <translation>Hra funguje s drobnými grafickými nebo zvukovými chybami a je hratelná od začátku do konce.</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="156"/>
@@ -6323,22 +6329,22 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="14"/>
<source>Create Room</source>
- <translation type="unfinished"/>
+ <translation>Vytvořit Místnost</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="37"/>
<source>Room Name</source>
- <translation type="unfinished"/>
+ <translation>Název Místnosti</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="51"/>
<source>Preferred Game</source>
- <translation type="unfinished"/>
+ <translation>Preferovaná hra</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="61"/>
<source>Max Players</source>
- <translation type="unfinished"/>
+ <translation>Maximálně Hráčů</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="91"/>
@@ -6348,22 +6354,22 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="101"/>
<source>(Leave blank for open game)</source>
- <translation type="unfinished"/>
+ <translation>(Zanechej prázdné pro otevřenou místnost)</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="118"/>
<source>Password</source>
- <translation type="unfinished"/>
+ <translation>Heslo</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="125"/>
<source>Port</source>
- <translation type="unfinished"/>
+ <translation>Port</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="139"/>
<source>Room Description</source>
- <translation type="unfinished"/>
+ <translation>Popis Místnosti</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="153"/>
@@ -6373,7 +6379,7 @@ Opravdu si přejete ukončit tuto aplikaci?</translation>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="184"/>
<source>Public</source>
- <translation type="unfinished"/>
+ <translation>Veřejná</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="189"/>
@@ -6403,11 +6409,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6430,117 +6437,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Pořídit Snímek Obrazovky</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
- <translation type="unfinished"/>
+ <translation>Změnit Přesnost GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
- <translation type="unfinished"/>
+ <translation>Opustit Režim Celé Obrazovky</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
- <translation type="unfinished"/>
+ <translation>Ukončit yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Celá Obrazovka</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Načíst soubor</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -6620,13 +6626,13 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.ui" line="14"/>
<source>Public Room Browser</source>
- <translation type="unfinished"/>
+ <translation>Prohlížeč Veřejných Místností</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.ui" line="32"/>
<location filename="../../src/yuzu/multiplayer/lobby.ui" line="39"/>
<source>Nickname</source>
- <translation type="unfinished"/>
+ <translation>Přezdívka</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.ui" line="59"/>
@@ -6676,12 +6682,12 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.cpp" line="218"/>
<source>Room Name</source>
- <translation type="unfinished"/>
+ <translation>Název Místnosti</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.cpp" line="219"/>
<source>Preferred Game</source>
- <translation type="unfinished"/>
+ <translation>Preferovaná hra</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.cpp" line="220"/>
@@ -6696,7 +6702,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/lobby.cpp" line="284"/>
<source>Refresh List</source>
- <translation type="unfinished"/>
+ <translation>Obnovit Seznam</translation>
</message>
</context>
<context>
@@ -6829,7 +6835,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="234"/>
<source>&amp;Verify Installed Contents</source>
- <translation type="unfinished"/>
+ <translation>&amp;Ověřit Nainstalovaný Obsah</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="239"/>
@@ -6874,12 +6880,12 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="298"/>
<source>&amp;Create Room</source>
- <translation type="unfinished"/>
+ <translation>&amp;Vytvořit Místnost</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="306"/>
<source>&amp;Leave Room</source>
- <translation type="unfinished"/>
+ <translation>&amp;Opustit Místnost</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="311"/>
@@ -6939,22 +6945,22 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="387"/>
<source>Open &amp;Album</source>
- <translation type="unfinished"/>
+ <translation>Otevřít &amp;Album</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="392"/>
<source>&amp;Set Nickname and Owner</source>
- <translation type="unfinished"/>
+ <translation>&amp;Nastavit Přezdívku a Vlastníka</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="397"/>
<source>&amp;Delete Game Data</source>
- <translation type="unfinished"/>
+ <translation>&amp;Odstranit Herní Data</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="402"/>
<source>&amp;Restore Amiibo</source>
- <translation type="unfinished"/>
+ <translation>&amp;Obnovit Amiibo</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="407"/>
@@ -6964,7 +6970,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="412"/>
<source>Open &amp;Mii Editor</source>
- <translation type="unfinished"/>
+ <translation>Otevřít &amp;Mii Editor</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="417"/>
@@ -6984,7 +6990,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="447"/>
<source>&amp;Reset</source>
- <translation type="unfinished"/>
+ <translation>&amp;Resetovat</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="455"/>
@@ -6994,7 +7000,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/main.ui" line="460"/>
<source>Open &amp;Controller Menu</source>
- <translation type="unfinished"/>
+ <translation>Otevřít &amp;Menu Ovladače</translation>
</message>
</context>
<context>
@@ -7064,12 +7070,12 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/state.cpp" line="117"/>
<source>Not Connected. Click here to find a room!</source>
- <translation type="unfinished"/>
+ <translation>Nepřipojeno. Klikni zde pro nalezení místnosti!</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/state.cpp" line="123"/>
<source>Not Connected</source>
- <translation type="unfinished"/>
+ <translation>Nepřipojeno</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/state.cpp" line="129"/>
@@ -7098,12 +7104,12 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="11"/>
<source>Username is not valid. Must be 4 to 20 alphanumeric characters.</source>
- <translation type="unfinished"/>
+ <translation>Přezdívka není validní. Musí obsahovat 4 až 20 alfanumerických znaků.</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="13"/>
<source>Room name is not valid. Must be 4 to 20 alphanumeric characters.</source>
- <translation type="unfinished"/>
+ <translation>Název místnosti není validní. Musí obsahovat 4 až 20 alfanumerických znaků.</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="15"/>
@@ -7118,7 +7124,7 @@ Debug Message: </source>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="19"/>
<source>Port must be a number between 0 to 65535.</source>
- <translation type="unfinished"/>
+ <translation>Port musí být číslo mezi 0 a 65535.</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="20"/>
@@ -7195,7 +7201,8 @@ They may have left the room.</source>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="52"/>
<source>No valid network interface is selected.
Please go to Configure -&gt; System -&gt; Network and make a selection.</source>
- <translation type="unfinished"/>
+ <translation>Není vybráno žádné validní síťové rozhraní.
+Jděte prosím do Nastavení -&gt; Systém -&gt; Síť a některé vyberte.</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="68"/>
@@ -7211,7 +7218,7 @@ Proceed anyway?</source>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="75"/>
<source>Leave Room</source>
- <translation type="unfinished"/>
+ <translation>Opustit Místnost</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/message.cpp" line="76"/>
@@ -7283,17 +7290,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/lobby_p.h" line="236"/>
<source>%1 is not playing a game</source>
- <translation type="unfinished"/>
+ <translation>%1 nehraje hru</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/lobby_p.h" line="238"/>
<source>%1 is playing %2</source>
- <translation type="unfinished"/>
+ <translation>%1 hraje %2</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="142"/>
<source>Not playing a game</source>
- <translation type="unfinished"/>
+ <translation>Nehraje hru</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="270"/>
@@ -7798,12 +7805,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_amiibo_settings.cpp" line="238"/>
<source>Set nickname and owner:</source>
- <translation type="unfinished"/>
+ <translation>Nastavit přezdívku a vlastníka:</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_amiibo_settings.cpp" line="241"/>
<source>Do you wish to restore this amiibo?</source>
- <translation type="unfinished"/>
+ <translation>Chcete obnovit toto amiibo?</translation>
</message>
</context>
<context>
@@ -8101,7 +8108,7 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru.</translation>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8109,78 +8116,78 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru.</translation>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Uživatelé</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profilový Manažer</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Vyber Uživatele:</translation>
</message>
diff --git a/dist/languages/da.ts b/dist/languages/da.ts
index 0b8f6d730..67dd08222 100644
--- a/dist/languages/da.ts
+++ b/dist/languages/da.ts
@@ -1891,7 +1891,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2308,33 +2308,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Baggrundsfarve:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -4842,970 +4842,970 @@ 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="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Indlæser Net-Applet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Deaktivér Net-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Aktuel emuleringshastighed. Værdier højere eller lavere end 100% indikerer, at emulering kører hurtigere eller langsommere end en Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Advarsel, Forældet Spilformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Fejl under indlæsning af ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>ROM-formatet understøttes ikke.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Fejl ved Åbning af %1 Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Mappe eksisterer ikke!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS-Udpakning Mislykkedes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Fuld</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Skelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Vælg RomFS-Nedfældelsestilstand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Udpakker RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Afbryd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS-Udpakning Lykkedes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Fuldførelse af opgaven lykkedes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Fejl ved Åbning af %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Vælg Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Egenskaber</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Indlæs Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Åbn Udpakket ROM-Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Ugyldig Mappe Valgt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installér fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systemapplikation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systemapplikationsopdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmwarepakke (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmwarepakke (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Spil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Spilopdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Spiludvidelse</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta-Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Vælg NCA-Installationstype...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Installation mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Fil ikke fundet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Manglende yuzu-Konto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Fil (%1);; Alle Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Indlæs Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Fejl ved indlæsning af Amiibo-data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Optag Skærmbillede</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG-Billede (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighed: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Hastighed: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Spil: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Billede: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5816,86 +5816,86 @@ 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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6405,11 +6405,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6432,117 +6433,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Optag Skærmbillede</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Fuldskærm</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Indlæs Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -8093,7 +8093,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8101,78 +8101,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Brugere</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profilvælger</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Vælg en bruger:</translation>
</message>
diff --git a/dist/languages/de.ts b/dist/languages/de.ts
index 2f8af4e9d..9e8537128 100644
--- a/dist/languages/de.ts
+++ b/dist/languages/de.ts
@@ -171,7 +171,7 @@ p, li { white-space: pre-wrap; }
This would ban both their forum username and their IP address.</source>
<translation>Bist du sicher, dass du %1? kicken und sperren möchtest?
-Dies würde deren Forum Benutzernamen und deren IP-Adresse sperren.</translation>
+Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren.</translation>
</message>
</context>
<context>
@@ -424,7 +424,7 @@ Dies würde deren Forum Benutzernamen und deren IP-Adresse sperren.</translation
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Backend:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -449,7 +449,7 @@ Dies würde deren Forum Benutzernamen und deren IP-Adresse sperren.</translation
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="62"/>
<source>Faster ASIMD instructions (32 bits only)</source>
- <translation>Schnellere ASIMD Instruktionen (nur 32-Bit)</translation>
+ <translation>Schnellere ASIMD-Instruktionen (nur 32-Bit)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="63"/>
@@ -484,7 +484,7 @@ Dies würde deren Forum Benutzernamen und deren IP-Adresse sperren.</translation
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="74"/>
<source>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.</source>
- <translation type="unfinished"/>
+ <translation>Diese Option verbessert die Geschwindigkeit, indem sie sich ausschließlich auf die Semantik von cmpxchg verlässt, um die Sicherheit von exklusiven Zugriffsanweisungen zu gewährleisten. Bitte beachten Sie, dass dies zu Deadlocks und anderen Race-Conditions führen kann.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="79"/>
@@ -575,7 +575,7 @@ Immediate (keine Synchronisierung) zeigt direkt, was verfügbar ist und kann Tea
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="106"/>
<source>Enable asynchronous presentation (Vulkan only)</source>
- <translation>Erlaube Asynchrone Präsentation (Nur Vulkan)</translation>
+ <translation>Aktiviere asynchrone Präsentation (Nur Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="109"/>
@@ -620,7 +620,7 @@ Immediate (keine Synchronisierung) zeigt direkt, was verfügbar ist und kann Tea
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="121"/>
<source>Use Vulkan pipeline cache</source>
- <translation>Vulkan-Pipeline-Cache verwernden</translation>
+ <translation>Vulkan-Pipeline-Cache verwenden</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="122"/>
@@ -654,12 +654,12 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="134"/>
<source>Sync to framerate of video playback</source>
- <translation>Synchronisiere die Bildrate mit der Zwischensequenz</translation>
+ <translation>Synchronisiere mit Bildrate von Video-Wiedergaben</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="135"/>
<source>Run the game at normal speed during video playback, even when the framerate is unlocked.</source>
- <translation>Lasse das Spiel in der normalen Geschwindigkeit abspielen, trotz freigeschalteter Bildrade (FPS)</translation>
+ <translation>Lasse das Spiel in der normalen Geschwindigkeit abspielen, trotz freigeschalteter Bildrate (FPS)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="137"/>
@@ -674,7 +674,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="143"/>
<source>RNG Seed</source>
- <translation>RNG Seed</translation>
+ <translation>RNG-Seed</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="145"/>
@@ -714,7 +714,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="153"/>
<source>Console Mode:</source>
- <translation>Konsolenmodus</translation>
+ <translation>Konsolenmodus:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="171"/>
@@ -744,7 +744,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="181"/>
<source>Enable Gamemode</source>
- <translation type="unfinished"/>
+ <translation>GameMode aktivieren</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="207"/>
@@ -844,12 +844,12 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="249"/>
<source>Dynarmic</source>
- <translation type="unfinished"/>
+ <translation>Dynarmic</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -934,7 +934,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="280"/>
<source>Nearest Neighbor</source>
- <translation>Nächste-Nachbarn</translation>
+ <translation>Nearest-Neighbor</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="281"/>
@@ -984,12 +984,12 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="296"/>
<source>Force 4:3</source>
- <translation>4:3 erzwingen</translation>
+ <translation>Erzwinge 4:3 </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="297"/>
<source>Force 21:9</source>
- <translation>21:9 erzwingen</translation>
+ <translation>Erzwinge 21:9</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="298"/>
@@ -1522,7 +1522,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>CPU-Backend</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1896,13 +1896,13 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Wenn aktiviert, wird das Umsortieren von Speicheruploads deaktiviert, was es ermöglicht, Uploads mit bestimmten Draws zu verknüpfen. Kann in einigen Fällen die Leistung beeinträchtigen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
<source>Disable Buffer Reorder</source>
- <translation type="unfinished"/>
+ <translation>Deaktiviere Buffer-Reorder</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="397"/>
@@ -2267,7 +2267,7 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="52"/>
<source>Linux</source>
- <translation type="unfinished"/>
+ <translation>Linux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="109"/>
@@ -2313,33 +2313,33 @@ Compute-Pipelines sind für alle anderen Treiber immer aktiviert.</translation>
<translation>Hintergrundfarbe:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Aus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Vsync Aus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Empfohlen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>An</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Vsync An</translation>
</message>
@@ -3609,7 +3609,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="88"/>
<source>Counteracts a game&apos;s built-in deadzone</source>
- <translation>Überschreibt spieleigene Deadzone</translation>
+ <translation>Wirkt einer spieleigenen Deadzone entgegen</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="94"/>
@@ -3619,7 +3619,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="123"/>
<source>Stick decay</source>
- <translation>Stick Abklingzeit</translation>
+ <translation>Stick-Abklingzeit</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="129"/>
@@ -4849,577 +4849,577 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf
<translation>Spiel wird ausgeführt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Lade Web-Applet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Deaktiviere die Web Applikation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Deaktivieren des Web-Applets kann zu undefiniertem Verhalten führen, und sollte nur mit Super Mario 3D All-Stars benutzt werden. Bist du sicher, dass du das Web-Applet deaktivieren möchtest?
(Dies kann in den Debug-Einstellungen wieder aktiviert werden.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Wie viele Shader im Moment kompiliert werden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Der momentan ausgewählte Auflösungsskalierung Multiplikator.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Derzeitige Emulations-Geschwindigkeit. Werte höher oder niedriger als 100% zeigen, dass die Emulation scheller oder langsamer läuft als auf einer Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Wie viele Bilder pro Sekunde angezeigt werden variiert von Spiel zu Spiel und von Szene zu Szene. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Ton aktivieren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Stummschalten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Ton zurücksetzen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Zuletzt geladene Dateien leeren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Fortsetzen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Warnung veraltetes Spielformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>ROM konnte nicht geladen werden!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 ist auf einen Fehler gestoßen beim Ausführen des Videokerns.
Dies ist in der Regel auf veraltete GPU Treiber zurückzuführen, integrierte GPUs eingeschlossen.
Bitte öffnen Sie die Log Datei für weitere Informationen. Für weitere Informationen wie Sie auf die Log Datei zugreifen, öffnen Sie bitte die folgende Seite: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Wie wird eine Log Datei hochgeladen?&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-Bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-Bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Schließe Software...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Speicherdaten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod-Daten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Konnte Verzeichnis %1 nicht öffnen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Verzeichnis existiert nicht!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Fehler beim erstellen des Shader-Cache-Ordner für den ausgewählten Titel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Fehler beim Entfernen des Inhalts</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Fehler beim Entfernen des Updates</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Fehler beim Entfernen des DLCs</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Installierten Spiele-Content entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Installierte Spiele-Updates entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Installierte Spiele-DLCs entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Eintrag entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Erfolgreich entfernt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Das Spiel wurde entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Das Update wurde entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 DLC entfernt. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Transferierbaren OpenGL Shader Cache löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Transferierbaren Vulkan Shader Cache löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Alle transferierbaren Shader Caches löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Spiel-Einstellungen entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Cache-Speicher entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Datei entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Spielzeit-Daten enfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Spielzeit zurücksetzen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Fehler beim Entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Fehler beim Entfernen des Vulkan-Pipeline-Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Fehler beim Entfernen des Driver-Pipeline-Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Die übertragbaren Shader-Caches wurden erfolgreich entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Entfernen des transferierbaren Shader-Cache-Verzeichnisses fehlgeschlagen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Fehler beim Entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Die Spiel-Einstellungen wurden entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS-Extraktion fehlgeschlagen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Komplett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Nur Ordnerstruktur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS Extraktions-Modus auswählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Es ist nicht genügend Speicher (%1) vorhanden um das RomFS zu entpacken. Bitte sorge für genügend Speicherplatze oder wähle ein anderes Verzeichnis aus. (Emulation &gt; Konfiguration &gt; System &gt; Dateisystem &gt; Dump Root)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFS wird extrahiert...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS wurde extrahiert!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Der Vorgang wurde erfolgreich abgeschlossen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Integritätsüberprüfung konnte nicht durchgeführt werden!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>Datei-Inhalte wurden nicht auf Gültigkeit überprüft.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Integritätsüberprüfung fehlgeschlagen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Datei-Inhalte könnten defekt sein.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Überprüfe Integrität…</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Integritätsüberprüfung erfolgreich!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Verknüpfung erstellen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>Möchtest du das Spiel im Vollbild starten?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Verknüpfung wurde erfolgreich erstellt unter %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Dies wird eine Verknüpfung zum aktuellen AppImage erstellen. Dies könnte nicht gut funktionieren falls du aktualisierst. Fortfahren?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>Erstellen einer Verknüpfung zu %1 fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Icon erstellen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Symboldatei konnte nicht erstellt werden. Der Pfad &quot;%1&quot; existiert nicht oder kann nicht erstellt werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Fehler beim Öffnen von %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Verzeichnis auswählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Datei laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Öffne das extrahierte ROM-Verzeichnis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Ungültiges Verzeichnis ausgewählt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Dateien installieren</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n Datei verbleibend</numerusform><numerusform>%n Dateien verbleibend</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Datei &quot;%1&quot; wird installiert...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>NAND-Installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n file was newly installed
@@ -5427,7 +5427,7 @@ Bitte nutze diese Funktion nur zum Installieren von Updates und DLC.</translatio
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n Datei wurde überschrieben
@@ -5435,7 +5435,7 @@ Bitte nutze diese Funktion nur zum Installieren von Updates und DLC.</translatio
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n Datei konnte nicht installiert werden
@@ -5443,194 +5443,194 @@ Bitte nutze diese Funktion nur zum Installieren von Updates und DLC.</translatio
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systemanwendung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systemarchiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systemanwendungsupdate</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware-Paket (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-Paket (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Spiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Spiel-Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Spiel-DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta-Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Wähle den NCA-Installationstyp aus...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Installation fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Datei nicht gefunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Hardwareanforderungen nicht erfüllt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Dein System erfüllt nicht die empfohlenen Mindestanforderungen der Hardware. Meldung der Komptabilität wurde deaktiviert.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Fehlender yuzu-Account</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Fehler beim Öffnen der URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS Aufnahme</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Datei von Spieler 1 überschreiben?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Ungültige Konfiguration erkannt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Das aktuelle Amiibo wurde entfernt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Das aktuelle Spiel sucht nicht nach Amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Datei (%1);; Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Amiibo laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Fehler beim Laden der Amiibo-Daten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Die ausgewählte Datei ist keine gültige Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Die ausgewählte Datei wird bereits verwendet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ein unbekannter Fehler ist aufgetreten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5639,193 +5639,193 @@ Bitte nutze diese Funktion nur zum Installieren von Updates und DLC.</translatio
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Keine Firmware verfügbar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Bitte installiere die Firmware um das Album-Applet zu nutzen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Album-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>Album-Applet ist nicht verfügbar. Bitte Firmware erneut installieren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Bitte installiere die Firmware um das Cabinet-Applet zu nutzen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Cabinet-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>Cabinet-Applet ist nicht verfügbar. Bitte Firmware erneut installieren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Bitte installiere die Firmware um den Mii-Editor zu nutzen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii-Edit-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>Mii-Editor ist nicht verfügbar. Bitte Firmware erneut installieren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>Bitte installiere die Firmware um das Controller-Menü zu nutzen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Controller-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>Controller-Menü ist nicht verfügbar. Bitte Firmware erneut installieren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Screenshot aufnehmen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bild (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS Zustand: Läuft %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS Zustand: Aufnahme %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
- <translation>TAS Status: Untätig %1/%2</translation>
+ <translation>TAS-Status: Untätig %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS Zustand: Ungültig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Stoppe Ausführung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Aufnahme stoppen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>Aufnahme</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Erstelle: %n Shader</numerusform><numerusform>Erstelle: %n Shader</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Skalierung: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Geschwindigkeit: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Geschwindigkeit: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Spiel: %1 FPS (Unbegrenzt)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Spiel: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>KEIN AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>LAUTSTÄRKE: STUMM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>LAUTSTÄRKE: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Schlüsselableitung bestätigen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5838,37 +5838,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Fuses fehlen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFO fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Derivationskomponenten fehlen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Die Verschlüsselungsschlüssel fehlen. &lt;br&gt;Bitte folgen Sie &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;dem Yuzu Schnellstart Guide&lt;/a&gt; um ihre benötigten Schlüssel, Firmware und Spiele zu erhalten.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5876,49 +5876,49 @@ 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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Schlüsselableitung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Die Systemarchiventschlüsselung ist gescheitert.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Verschlüsselungsschlüssel konnten die Firmware nicht entschlüsseln. &lt;br&gt;Bitte befolge &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;den yuzu-Quickstart-Guide&lt;/a&gt; um alle deine Schlüssel (Keys), Firmware, und Spiele zu erhalten.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS wählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6431,11 +6431,12 @@ Debug Nachricht:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Audio aktivieren / deaktivieren</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6458,117 +6459,116 @@ Debug Nachricht:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Hauptfenster</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Lautstärke verringern</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Lautstärke erhöhen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Screenshot aufnehmen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Adaptiven Filter ändern</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Dockmodus ändern</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>GPU-Genauigkeit ändern</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Emulation fortsetzen/pausieren</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Vollbild verlassen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>yuzu verlassen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Vollbild</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Datei laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Amiibo laden/entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Emulation neustarten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Emulation stoppen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS aufnehmen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS neustarten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS starten/stoppen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Filterleiste umschalten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Aktiviere Bildraten Limitierung</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Mausschwenk umschalten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>Renderdoc-Aufnahme umschalten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Statusleiste umschalten</translation>
</message>
@@ -8134,7 +8134,7 @@ Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software.</tra
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8142,78 +8142,78 @@ Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software.</tra
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Nutzer</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Profil-Ersteller</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profilauswahl</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Profil-Icon-Editor</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Profil-Spitzname-Editor</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Wer wird die Punkte erhalten?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Wer verwendet den Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Wer macht den Einkauf?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Wer postet?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Wähle einen Nutzer aus, den du mit dem Nintendo Account verknüpfen willst.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Für welchen Nutzer sollen die Einstellungen geändert werden?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Daten für welchen Nutzer formatieren?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Welcher Nutzer wird auf eine andere Konsole übertragen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Speicherdaten für welchen Nutzer senden?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Wähle einen Benutzer aus:</translation>
</message>
diff --git a/dist/languages/el.ts b/dist/languages/el.ts
index 27a074323..542e7fa37 100644
--- a/dist/languages/el.ts
+++ b/dist/languages/el.ts
@@ -1883,7 +1883,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2300,33 +2300,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Χρώμα Φόντου:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -4833,84 +4833,84 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Πόσα καρέ ανά δευτερόλεπτο εμφανίζει το παιχνίδι αυτή τη στιγμή. Αυτό διαφέρει από παιχνίδι σε παιχνίδι και από σκηνή σε σκηνή.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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 type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Συνέχεια</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Παύση</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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>Μη μεταφρασμένη συμβολοσειρά
@@ -4918,890 +4918,890 @@ Drag points to change position, or double-click table cells to edit values.</sou
Για μια εξήγηση των διαφόρων μορφών Switch που υποστηρίζει το yuzu,&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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Σφάλμα κατά τη φόρτωση της ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Εμφανίστηκε ένα απροσδιόριστο σφάλμα. Ανατρέξτε στο αρχείο καταγραφής για περισσότερες λεπτομέρειες.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Αποθήκευση δεδομένων</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Ο φάκελος δεν υπάρχει!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Αφαίρεση Αρχείου</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Επιλογή λειτουργίας απόρριψης RomFS </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Ακύρωση</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Η επέμβαση ολοκληρώθηκε με επιτυχία.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Επιλογή καταλόγου</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Ιδιότητες</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Φόρτωση αρχείου</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Αποτελέσματα εγκατάστασης</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Εφαρμογή συστήματος</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Παιχνίδι</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Ενημέρωση παιχνιδιού</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC παιχνιδιού</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Επιλέξτε τον τύπο εγκατάστασης NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Το αρχείο δεν βρέθηκε</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>Το αρχείο &quot;%1&quot; δεν βρέθηκε</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Σφάλμα κατα το άνοιγμα του URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Σφάλμα</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Φόρτωση Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Σφάλμα φόρτωσης δεδομένων Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Το επιλεγμένο αρχείο δεν αποτελεί έγκυρο amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Το επιλεγμένο αρχείο χρησιμοποιείται ήδη</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet Χειρισμού</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Λήψη στιγμιότυπου οθόνης</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Εικόνα PBG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Έναρξη</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Κλίμακα: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Ταχύτητα: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Ταχύτητα: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Καρέ: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5812,86 +5812,86 @@ 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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Λείπει το BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Λείπει το BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- Λείπει το PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Είστε σίγουροι ότι θέλετε να κλείσετε το yuzu;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6401,11 +6401,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6428,117 +6429,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Λήψη στιγμιότυπου οθόνης</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Πλήρη Οθόνη</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Φόρτωση αρχείου</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -8092,7 +8092,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8100,78 +8100,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Χρήστες</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Επιλογή Χρήστη </translation>
</message>
diff --git a/dist/languages/es.ts b/dist/languages/es.ts
index 6c03aa57d..2d9f44671 100644
--- a/dist/languages/es.ts
+++ b/dist/languages/es.ts
@@ -390,7 +390,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="33"/>
<source>Mute audio</source>
- <translation type="unfinished"/>
+ <translation>Silenciar sonido</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="34"/>
@@ -410,7 +410,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="41"/>
<source>Memory Layout</source>
- <translation type="unfinished"/>
+ <translation>Memoria emulada</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="43"/>
@@ -425,7 +425,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Motor:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -435,7 +435,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="55"/>
<source>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora el rendimiento al reducir la precisión de las instrucciones fused-multiply-add en las CPU sin soporte nativo FMA. </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="58"/>
@@ -445,7 +445,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="59"/>
<source>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora el rendimiento de algunas funciones aproximadas de punto flotante al utilizar aproximaciones nativas menos precisas.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="62"/>
@@ -455,7 +455,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="63"/>
<source>This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora la velocidad de las funciones de punto flotante ASIMD de 32 bits al ejecutarlas con redondeos incorrectos.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="65"/>
@@ -465,7 +465,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="66"/>
<source>This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora la velocidad eliminando las comprobaciones NaN. Ten en cuenta que esto también reduce la precisión de algunas instrucciones de punto flotante.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="68"/>
@@ -475,7 +475,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="69"/>
<source>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&apos;s memory.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora la velocidad eliminando el chequeo de seguridad previo a la lectura/escritura de la memoria en el guest. Deshabilitarlo podría permitir la lectura/escritura de la memoria del emulador.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="73"/>
@@ -485,7 +485,7 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="74"/>
<source>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.</source>
- <translation type="unfinished"/>
+ <translation>Esta opción mejora la velocidad al confiar sólo en las semánticas de cmpxchg para asegurar la seguridad de las instrucciones de acceso exclusivo. Nótese que ésto puede causar bloqueos mutuos y otras condiciones de carrera.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="79"/>
@@ -550,12 +550,12 @@ Esto banearía su nombre del foro y su dirección IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="92"/>
<source>ASTC Decoding Method:</source>
- <translation type="unfinished"/>
+ <translation>Modo decodificación ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="93"/>
<source>ASTC Recompression Method:</source>
- <translation type="unfinished"/>
+ <translation>Modo recompresión ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="95"/>
@@ -569,7 +569,7 @@ FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow do
Mailbox can have lower latency than FIFO and does not tear but may drop frames.
Immediate (no synchronization) just presents whatever is available and can exhibit tearing.</source>
<translation>FIFO (VSync) no pierde frames ni muestra tearing, pero está limitado por la tasa de refresco de la pantalla.
-FIFO Relaxed es similar a FIFO, pero permite el tearing tan pronto como se recupera de una ralentización.
+FIFO Relaxed es similar a FIFO, pero permite el tearing mientras se recupera de una ralentización.
Mailbox puede tener una latencia más baja que FIFO y no causa tearing, pero podría hacer perder frames.
Inmediato (sin sincronización) sólo muestra lo que está disponible y puede mostrar tearing.</translation>
</message>
@@ -631,14 +631,16 @@ Inmediato (sin sincronización) sólo muestra lo que está disponible y puede mo
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="126"/>
<source>Enable Compute Pipelines (Intel Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>Activar Compute Pipelines (solo Intel Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="127"/>
<source>Enable compute pipelines, required by some games.
This setting only exists for Intel proprietary drivers, and may crash if enabled.
Compute pipelines are always enabled on all other drivers.</source>
- <translation type="unfinished"/>
+ <translation>Activa las canalizaciones de cómputo, que son necesarias en algunos juegos.
+Esta opción sólo está para los drivers propietarios de AMD, y puede colgarse si se activa.
+Las canalizaciones de cómputo siempre están activadas en los otros drivers.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="131"/>
@@ -648,7 +650,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="132"/>
<source>Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing.</source>
- <translation type="unfinished"/>
+ <translation>Usa limpieza de memoria reactiva en vez de predictiva, permitiendo una sincronización de memoria más precisa.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="134"/>
@@ -658,7 +660,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="135"/>
<source>Run the game at normal speed during video playback, even when the framerate is unlocked.</source>
- <translation>Corre el juego a la velocidad normal durante la reproducción de vídeos, incluso cuando no hay límite de fotogramas.</translation>
+ <translation>Ejecuta el juego a velocidad normal durante la reproducción de vídeos, incluso cuando no hay límite de fotogramas.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="137"/>
@@ -688,7 +690,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="148"/>
<source>Language:</source>
- <translation type="unfinished"/>
+ <translation>Idioma:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="149"/>
@@ -713,12 +715,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="153"/>
<source>Console Mode:</source>
- <translation type="unfinished"/>
+ <translation>Modo consola:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="171"/>
<source>Prompt for user on game boot</source>
- <translation>Mostrar usuario actual al abrir el juego</translation>
+ <translation>Seleccionar usuario al arrancar</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="172"/>
@@ -728,22 +730,22 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="174"/>
<source>Confirm before stopping emulation</source>
- <translation type="unfinished"/>
+ <translation>Confirmar detención</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="176"/>
<source>Hide mouse on inactivity</source>
- <translation>Ocultar el cursor en caso de inactividad.</translation>
+ <translation>Ocultar el cursor por inactividad.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="177"/>
<source>Disable controller applet</source>
- <translation>Desactivar applet de control</translation>
+ <translation>Desactivar applet de mandos</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="181"/>
<source>Enable Gamemode</source>
- <translation type="unfinished"/>
+ <translation>Activar Modo Juego</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="207"/>
@@ -758,7 +760,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="209"/>
<source>CPU Asynchronous</source>
- <translation type="unfinished"/>
+ <translation>CPU Asíncrona</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="214"/>
@@ -788,7 +790,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="224"/>
<source>Null</source>
- <translation>Null</translation>
+ <translation>Ninguno</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="229"/>
@@ -838,17 +840,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="245"/>
<source>Paranoid (disables most optimizations)</source>
- <translation>Inestable (Deshabilita la mayoría de optimizaciones)</translation>
+ <translation>Paranoico (Deshabilita la mayoría de optimizaciones)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="249"/>
<source>Dynarmic</source>
- <translation type="unfinished"/>
+ <translation>DynARMic</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -878,12 +880,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="266"/>
<source>0.5X (360p/540p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>x0,5 (360p/540p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="267"/>
<source>0.75X (540p/810p) [EXPERIMENTAL]</source>
- <translation>x0.75 (540p/810p) [EXPERIMENTAL]</translation>
+ <translation>x0,75 (540p/810p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="268"/>
@@ -893,7 +895,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="269"/>
<source>1.5X (1080p/1620p) [EXPERIMENTAL]</source>
- <translation>x1.5 (1080p/1620p) [EXPERIMENTAL]</translation>
+ <translation>x1,5 (1080p/1620p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="270"/>
@@ -998,7 +1000,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="299"/>
<source>Stretch to Window</source>
- <translation>Ajustar a la ventana</translation>
+ <translation>Estirar a la ventana</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="303"/>
@@ -1401,17 +1403,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="405"/>
<source>4GB DRAM (Default)</source>
- <translation type="unfinished"/>
+ <translation>4GB DRAM (Por defecto)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="406"/>
<source>6GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>6GB DRAM (Inseguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="407"/>
<source>8GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>8GB DRAM (Inseguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="411"/>
@@ -1426,17 +1428,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="417"/>
<source>Always ask (Default)</source>
- <translation type="unfinished"/>
+ <translation>Preguntar siempre (Por defecto)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="418"/>
<source>Only if game specifies not to stop</source>
- <translation type="unfinished"/>
+ <translation>Solo si el juego pide no ser cerrado</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="419"/>
<source>Never ask</source>
- <translation type="unfinished"/>
+ <translation>Nunca preguntar</translation>
</message>
</context>
<context>
@@ -1521,7 +1523,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>Motor CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1853,7 +1855,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="312"/>
<source>Enable Renderdoc Hotkey</source>
- <translation>Activar Atajo de Renderdoc</translation>
+ <translation>Atajo para activar Renderdoc</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="322"/>
@@ -1897,13 +1899,13 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Al activarse, se desactiva la reordenación de las subidas de memoria mapeadas, lo que permite asociar subidas con extracciones específicas. Puede reducir el rendimiento en algunos casos.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
<source>Disable Buffer Reorder</source>
- <translation type="unfinished"/>
+ <translation>Desactivar reordenamiento de búffer</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="397"/>
@@ -1913,7 +1915,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="403"/>
<source>Enables yuzu to check for a working Vulkan environment when the program starts up. Disable this if this is causing issues with external programs seeing yuzu.</source>
- <translation>Permite a yuzu comprobar si el entorno de Vulkan funciona cuando el programa se inicia. Desactiva esto si está causando problemas con los programas externos ligados a yuzu.</translation>
+ <translation>Permite a yuzu comprobar si el entorno de Vulkan funciona cuando el programa se inicia. Desactiva esto si está causando problemas a programas externos que ven a yuzu.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="406"/>
@@ -1983,7 +1985,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.cpp" line="82"/>
<source>Web applet not compiled</source>
- <translation>La web applet no se ha compilado</translation>
+ <translation>Applet web no compilado</translation>
</message>
</context>
<context>
@@ -2268,7 +2270,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="52"/>
<source>Linux</source>
- <translation type="unfinished"/>
+ <translation>Linux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="109"/>
@@ -2314,33 +2316,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Color de fondo:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Desactivado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync Desactivado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Recomendado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Activado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync Activado</translation>
</message>
@@ -2805,7 +2807,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2726"/>
<source>Enable direct Pro Controller driver [EXPERIMENTAL]</source>
- <translation>Activar driver directo Pro Controller [EXPERIMENTAL]</translation>
+ <translation>Activar driver directo del Mando Pro [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2733"/>
@@ -3615,12 +3617,12 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="94"/>
<source>Deadzone</source>
- <translation>Punto muerto</translation>
+ <translation>Zona muerta</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="123"/>
<source>Stick decay</source>
- <translation>Decaída del stick</translation>
+ <translation>Caída del stick</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_mouse_panning.ui" line="129"/>
@@ -4070,7 +4072,7 @@ UUID: %2</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="302"/>
<source>The current mapped device doesn&apos;t support the ring controller</source>
- <translation>El dispositivo de entrada actual no soporta el control Ring.</translation>
+ <translation>El dispositivo de entrada actual no soporta el Ring Controller.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="306"/>
@@ -4721,7 +4723,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="141"/>
<source>Unverified, please click Verify before saving configuration</source>
<comment>Tooltip</comment>
- <translation>No verificado, por favor, haz clic en Verificar antes de guardar los ajustes.</translation>
+ <translation>No verificado. Por favor, haz clic en Verificar antes de guardar los ajustes.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_web.cpp" line="147"/>
@@ -4850,575 +4852,575 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de
<translation>Ejecutando un juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Cargando Web applet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Desactivar Web applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Deshabilitar el Applet Web puede causar comportamientos imprevistos y debería solo ser usado con Super Mario 3D All-Stars. ¿Estas seguro que quieres deshabilitar el Applet Web?
(Puede ser reactivado en las configuraciones de Depuración.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>La cantidad de shaders que se están construyendo actualmente</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>El multiplicador de escala de resolución seleccionado actualmente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>La velocidad de emulación actual. Los valores superiores o inferiores al 100% indican que la emulación se está ejecutando más rápido o más lento que en una Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>La cantidad de fotogramas por segundo que se está mostrando el juego actualmente. Esto variará de un juego a otro y de una escena a otra.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
- <translation>Desmutear</translation>
+ <translation>Desileciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
- <translation>Mutear</translation>
+ <translation>Silenciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Restablecer Volumen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Eliminar archivos recientes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Advertencia: formato del juego obsoleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>¡Error al cargar la ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Cerrando software...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Datos de guardado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Datos de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Error al abrir la carpeta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>¡La carpeta no existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Error al eliminar el contenido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Error al eliminar la actualización</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Error al eliminar el DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>¿Eliminar contenido del juego instalado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>¿Eliminar actualización del juego instalado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>¿Eliminar el DLC del juego instalado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Eliminar entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Se ha eliminado con éxito</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<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="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>¿Quitar almacenamiento de caché?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Eliminar archivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Eliminar información del tiempo de juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>¿Reestablecer tiempo de juego?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Error al eliminar la caché de canalización del controlador Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>No se ha podido eliminar la caché de canalización del controlador.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<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="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>¡La extracción de RomFS ha fallado!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Completo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>En secciones</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Elegir método de volcado de RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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, selecciona el método en que quieres volcar el RomFS.&lt;br&gt;Completo copiará todos los archivos al nuevo directorio &lt;br&gt; mientras que en secciones solo creará la estructura del directorio.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extrayendo RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>¡La extracción RomFS ha tenido éxito!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>La operación se completó con éxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>¡No se pudo ejecutar la verificación de integridad!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>No se ha podido comprobar la validez de los contenidos del archivo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>¡Verificación de integridad fallida!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Los contenidos del archivo pueden estar corruptos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Verificando integridad...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>¡La verificación de integridad ha sido un éxito!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Crear acceso directo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
- <translation>¿Deseas iniciar el juego en pantalla completa?</translation>
+ <translation>¿Desea iniciar el juego en pantalla completa?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Se ha creado un acceso directo a %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Esto creará un acceso directo a la AppImage actual. Esto puede no funcionar bien si se actualiza. ¿Continuar?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>No se ha podido crear el acceso directo de %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Crear icono</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>No se puede crear el archivo de icono. La ruta &quot;%1&quot; no existe y no se ha podido crear.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Error al intentar abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Seleccionar directorio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Propiedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Cargar archivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<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="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Directorio seleccionado no válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Instalar archivos</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n archivo(s) restantes</numerusform><numerusform>%n archivo(s) restantes</numerusform><numerusform>%n archivo(s) restantes</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando el archivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Instalar resultados</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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 se recomienda 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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n archivo(s) recién instalado/s
@@ -5427,7 +5429,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n archivo(s) recién sobreescrito/s
@@ -5436,7 +5438,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n archivo(s) no se instaló/instalaron
@@ -5445,194 +5447,194 @@ 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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplicación del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Archivo del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Actualización de la aplicación del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Paquete de firmware (Tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Paquete de firmware (Tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Actualización de juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC del juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Titulo delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Seleccione el tipo de instalación NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Fallo en la instalación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Archivo no encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>Aceptar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>No se cumplen los requisitos de hardware</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>El sistema no cumple con los requisitos de hardware recomendados. Los informes de compatibilidad se han desactivado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Falta la cuenta de Yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Error al abrir la URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Grabación TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>¿Sobrescribir archivo del jugador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Configuración no válida detectada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>El amiibo actual ha sido eliminado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>El juego actual no está buscando amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Archivo amiibo (%1);; Todos los archivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Cargar amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Error al cargar los datos Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>El archivo seleccionado no es un amiibo válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>El archivo seleccionado ya se encuentra en uso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ha ocurrido un error inesperado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5641,193 +5643,193 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</tr
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>No hay firmware disponible</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Por favor, instala el firmware para usar la aplicación del Álbum.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Applet de Álbum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>La aplicación del Álbum no esta disponible. Por favor, reinstala el firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Por favor, instala el firmware para usar la applet de Cabinet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Applet de Cabinet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>La applet de Cabinet no está disponible. Por favor, reinstale el firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Por favor, instala el firmware para usar el editor de Mii.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Applet de Editor de Mii</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>El editor de Mii no está disponible. Por favor, reinstala el firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
- <translation>Por favor, instala el firmware para poder usar el Menú de controladores.</translation>
+ <translation>Por favor, instala el firmware para poder usar el Menú de mandos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
- <translation>Controlador Applet</translation>
+ <translation>Applet de Mandos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
- <translation>El Menú de controladores no se encuentra disponible. Por favor, reinstala el firmware.</translation>
+ <translation>El Menú de mandos no se encuentra disponible. Por favor, reinstala el firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Imagen PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Estado TAS: ejecutando %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Estado TAS: grabando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Estado TAS: inactivo %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Estado TAS: nulo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar de ejecutar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Pausar g&amp;rabación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;rabar</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Creando: %n shader(s)</numerusform><numerusform>Construyendo: %n shader(s)</numerusform><numerusform>Construyendo: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidad: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Velocidad: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Juego: %1 FPS (desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Juego: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Fotogramas: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUMEN: SILENCIO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUMEN: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmar la clave de rederivación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5844,37 +5846,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Faltan fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Falta BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Falta BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Falta PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Faltan componentes de derivación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5883,49 +5885,49 @@ Esto puede llevar unos minutos dependiendo
del rendimiento de su sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Obtención de claves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Desencriptación del Sistema de Archivos Fallida</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Las claves de encriptación no han podido desencriptar el firmware. &lt;br&gt;Por favor, siga&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 obtener todas tus claves, firmware y juegos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Selecciona el destinatario para volcar el RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5951,7 +5953,7 @@ Would you like to bypass this and exit anyway?</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="34"/>
<source>Nearest</source>
- <translation>Mas cercano</translation>
+ <translation>Más cercano</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="36"/>
@@ -6011,7 +6013,7 @@ Would you like to bypass this and exit anyway?</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="59"/>
<source>Null</source>
- <translation>Null</translation>
+ <translation>Ninguno</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="63"/>
@@ -6268,7 +6270,7 @@ Would you like to bypass this and exit anyway?</source>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="150"/>
<source>Ingame</source>
- <translation>Inicia</translation>
+ <translation>En juego</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list_p.h" line="150"/>
@@ -6367,7 +6369,7 @@ Would you like to bypass this and exit anyway?</source>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="51"/>
<source>Preferred Game</source>
- <translation>Juego preferente</translation>
+ <translation>Juego preferido</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/host_room.ui" line="61"/>
@@ -6438,11 +6440,12 @@ Mensaje de depuración: </translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Activar/Desactivar audio</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6465,117 +6468,116 @@ Mensaje de depuración: </translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Ventana principal</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Bajar volumen del audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Subir volumen del audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Cambiar filtro adaptable</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Cambiar a modo sobremesa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Cambiar precisión de GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Continuar/Pausar emulación</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Salir de pantalla completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Cerrar yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Pantalla completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Cargar archivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Cargar/Eliminar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Reiniciar emulación</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Detener emulación</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Grabar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Reiniciar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Iniciar/detener TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Alternar barra de filtro</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Alternar limite de fotogramas</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Alternar desplazamiento del ratón</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>Alternar Captura de Renderdoc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Alternar barra de estado</translation>
</message>
@@ -6975,7 +6977,7 @@ Mensaje de depuración: </translation>
<message>
<location filename="../../src/yuzu/main.ui" line="387"/>
<source>Open &amp;Album</source>
- <translation>Abrir &amp;Álbum</translation>
+ <translation>Abrir &amp;Album</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="392"/>
@@ -7030,7 +7032,7 @@ Mensaje de depuración: </translation>
<message>
<location filename="../../src/yuzu/main.ui" line="460"/>
<source>Open &amp;Controller Menu</source>
- <translation>Abrir Menú de &amp;Controladores</translation>
+ <translation>Abrir Menú de &amp;Mandos</translation>
</message>
</context>
<context>
@@ -8068,7 +8070,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="2653"/>
<source>Not enough controllers</source>
- <translation>No hay suficientes controladores.</translation>
+ <translation>No hay suficientes mandos.</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="485"/>
@@ -8141,7 +8143,7 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software.</tr
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8149,78 +8151,78 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software.</tr
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Usuarios</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Creador de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Selector de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Editor de icono de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Editor de nombre de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>¿Quién recibirá los puntos?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>¿Quién va a utilizar Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>¿Quién está haciendo la compra?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>¿Quién está publicando esto?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Elige un usuario para vincularlo a una Cuenta Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>¿Para qué usuario desea cambiar la configuración?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>¿Para qué usuario se borrarán los datos?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>¿Qué usuario será transferido a otra consola?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>¿A qué usuario se le enviarán los datos de guardado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Seleccione un usuario:</translation>
</message>
diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts
index 921eb5238..93f5e408c 100644
--- a/dist/languages/fr.ts
+++ b/dist/languages/fr.ts
@@ -426,7 +426,7 @@ Cela bannirait à la fois son nom d&apos;utilisateur du forum et son adresse IP.
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Backend :</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -747,7 +747,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="181"/>
<source>Enable Gamemode</source>
- <translation type="unfinished"/>
+ <translation>Activer le mode jeu</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="207"/>
@@ -847,12 +847,12 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="249"/>
<source>Dynarmic</source>
- <translation type="unfinished"/>
+ <translation>Dynamique</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -1525,7 +1525,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>Backend du CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1787,7 +1787,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="213"/>
<source>When checked, the max size of the log increases from 100 MB to 1 GB</source>
- <translation>Lorsque coché, la taille maximum du relevé d&apos;événements augmente de 100 Mo à 1 Go</translation>
+ <translation>Lorsque la case est cochée, la taille maximum du relevé d&apos;événements augmente de 100 Mo à 1 Go</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="216"/>
@@ -1827,7 +1827,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="279"/>
<source>When checked, it will dump all the macro programs of the GPU</source>
- <translation>Lorsqu&apos;il est coché, il videra tous les programmes de macro du GPU</translation>
+ <translation>Lorsque la case est cochée, il videra tous les programmes de macro du GPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="282"/>
@@ -1837,7 +1837,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="289"/>
<source>When checked, it enables Nsight Aftermath crash dumps</source>
- <translation>Une fois cochée, cette option active les &quot;crash dumps&quot; pour Nsight Aftermath</translation>
+ <translation>Lorsque la case est cochée, cette option active les &quot;crash dumps&quot; pour Nsight Aftermath</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="292"/>
@@ -1847,7 +1847,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="302"/>
<source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
- <translation>Lorsqu&apos;il est coché, il videra tous les shaders d&apos;assemblage d&apos;origine du cache de shader de disque ou du jeu tels qu&apos;ils ont été trouvés</translation>
+ <translation>Lorsque la case est cochée, il videra tous les shaders d&apos;assemblage d&apos;origine du cache de shader de disque ou du jeu tels qu&apos;ils ont été trouvés</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="305"/>
@@ -1862,7 +1862,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="322"/>
<source>When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower</source>
- <translation>Lorsque coché, désactive le compilateur de macros JIT. L&apos;activer ralentit les jeux</translation>
+ <translation>Lorsque la case est cochée, désactive le compilateur de macros JIT. L&apos;activer ralentit les jeux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="325"/>
@@ -1872,7 +1872,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="335"/>
<source>When checked, it disables the macro HLE functions. Enabling this makes games run slower</source>
- <translation>Lorsque coché, désactive les fonctions macro HLE. L&apos;activer ralentit les jeux</translation>
+ <translation>Lorsque la case est cochée, désactive les fonctions macro HLE. L&apos;activer ralentit les jeux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="338"/>
@@ -1882,7 +1882,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="348"/>
<source>When checked, the graphics API enters a slower debugging mode</source>
- <translation>Lorsque coché, l&apos;API graphique entre dans un mode de débogage plus lent</translation>
+ <translation>Lorsque la case est cochée, l&apos;API graphique entre dans un mode de débogage plus lent</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="351"/>
@@ -1901,8 +1901,8 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Lorsque la case est cochée, désactive le réordonnancement des téléchargements de mémoire mappée, ce qui permet d&apos;associer les téléchargements à des dessins spécifiques. Cela peut réduire les performances dans certains cas.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
@@ -2272,7 +2272,7 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="52"/>
<source>Linux</source>
- <translation type="unfinished"/>
+ <translation>Linux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="109"/>
@@ -2318,33 +2318,33 @@ même-ci la fréquence d&apos;image est dévérouillée. </translation>
<translation>Couleur de l’arrière plan :</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Désactivé</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync Désactivée</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Recommandé</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Activé</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync Activée</translation>
</message>
@@ -4854,780 +4854,780 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce
<translation>Exécution d&apos;un jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Chargement de l&apos;applet web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Désactiver l&apos;applet web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>La désactivation de l&apos;applet Web peut entraîner un comportement indéfini et ne doit être utilisée qu&apos;avec Super Mario 3D All-Stars. Voulez-vous vraiment désactiver l&apos;applet Web ?
(Cela peut être réactivé dans les paramètres de débogage.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>La quantité de shaders en cours de construction</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Le multiplicateur de mise à l&apos;échelle de résolution actuellement sélectionné.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Valeur actuelle de la vitesse de l&apos;émulation. Des valeurs plus hautes ou plus basses que 100% indique que l&apos;émulation fonctionne plus vite ou plus lentement qu&apos;une véritable Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Combien d&apos;image par seconde le jeu est en train d&apos;afficher. Ceci vas varier de jeu en jeu et de scènes en scènes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Remettre le son</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Couper le son</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Réinitialiser le volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Effacer les fichiers récents</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continuer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<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="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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 le format de répertoire ROM déconstruit pour ce jeu, qui est un format obsolète remplacé par d&apos;autres tels que NCA, NAX, XCI ou NSP. Les répertoires de ROM déconstruits ne contiennent pas d&apos;icônes, de métadonnées ni de prise en charge des mises à jour.&lt;br&gt;&lt;br&gt;Pour obtenir des explications sur les différents formats pris en charge par yuzu, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;consultez notre wiki&lt;/a&gt;. Ce message ne s&apos;affichera plus.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Erreur lors du chargement de la ROM !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Fermeture du logiciel...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Enregistrer les données</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Donnés du Mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<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="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Le dossier n&apos;existe pas !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Erreur en enlevant le contenu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Erreur en enlevant la Mise à Jour</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Erreur en enlevant le DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Enlever les données du jeu installé ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Enlever la mise à jour du jeu installé ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Enlever le DLC du jeu installé ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Supprimer l&apos;entrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Supprimé avec succès</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Supprimer la configuration personnalisée du jeu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Supprimer le stockage du cache ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Supprimer fichier</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Supprimer les données de temps de jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Réinitialiser le temps de jeu ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Erreur lors de la suppression du cache de pipeline de pilotes Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Échec de la suppression du cache de pipeline de pilotes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<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="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>L&apos;extraction de la RomFS a échoué !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Plein</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Squelette</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<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="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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; Configurer &gt; Système &gt; Système de fichiers &gt; Extraire la racine</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extraction de la RomFS ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extraction de la RomFS réussi !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<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="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>La vérification de l&apos;intégrité n&apos;a pas pu être effectuée !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>La validité du contenu du fichier n&apos;a pas été vérifiée.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>La vérification de l&apos;intégrité a échoué !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Le contenu du fichier pourrait être corrompu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Vérification de l&apos;intégrité...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>La vérification de l&apos;intégrité a réussi !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Créer un raccourci</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>Voulez-vous lancer le jeu en plein écran ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Création réussie d&apos;un raccourci vers %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Cela créera un raccourci vers l&apos;AppImage actuelle. Cela peut ne pas fonctionner correctement si vous mettez à jour. Continuer ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>Impossible de créer un raccourci vers %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Créer une icône</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Impossible de créer le fichier d&apos;icône. Le chemin &quot;%1&quot; n&apos;existe pas et ne peut pas être créé.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Erreur lors de l&apos;ouverture %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Sélectionner un répertoire</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Propriétés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Charger un fichier</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Ouvrir le dossier des ROM extraites</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Destination sélectionnée invalide</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Installer les fichiers</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n fichier restant</numerusform><numerusform>%n fichiers restants</numerusform><numerusform>%n fichiers restants</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installation du fichier &quot;%1&quot; ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Résultats d&apos;installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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><numerusform>%n fichiers ont été nouvellement installés</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n fichier a été écrasé</numerusform><numerusform>%n fichiers ont été écrasés</numerusform><numerusform>%n fichiers ont été écrasés</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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><numerusform>%n fichiers n&apos;ont pas pu être installés</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Application Système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Archive Système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Mise à jour de l&apos;application système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Paquet micrologiciel (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Paquet micrologiciel (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Mise à jour de jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC de jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Titre Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Échec de l&apos;installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Fichier non trouvé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Éxigences matérielles non respectées</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Votre système ne correspond pas aux éxigences matérielles. Les rapports de comptabilité ont été désactivés.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Compte yuzu manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<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="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Enregistrement TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Écraser le fichier du joueur 1 ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Configuration invalide détectée</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Le contrôleur portable ne peut pas être utilisé en mode TV. La manette pro sera sélectionné.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>L&apos;amiibo actuel a été retiré</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Le jeu actuel ne cherche pas d&apos;amiibos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Fichier Amiibo (%1);; Tous les fichiers (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Charger un Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<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="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Le fichier choisi n&apos;est pas un amiibo valide</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Le fichier sélectionné est déjà utilisé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Une erreur inconnue s&apos;est produite</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5636,193 +5636,193 @@ Veuillez n&apos;utiliser cette fonctionnalité que pour installer des mises à j
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Pas de firmware disponible</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Veuillez installer le firmware pour utiliser l&apos;applet de l&apos;album.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Applet de l&apos;album</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>L&apos;applet de l&apos;album n&apos;est pas disponible. Veuillez réinstaller le firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Veuillez installer le firmware pour utiliser l&apos;applet du cabinet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Applet du cabinet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>L&apos;applet du cabinet n&apos;est pas disponible. Veuillez réinstaller le firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Veuillez installer le firmware pour utiliser l&apos;éditeur Mii.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Applet de l&apos;éditeur Mii</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>L&apos;éditeur Mii n&apos;est pas disponible. Veuillez réinstaller le firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>Veuillez installer le firmware pour utiliser le menu des manettes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet Contrôleur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>Le menu des manettes n&apos;est pas disponible. Veuillez réinstaller le firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Capture d&apos;écran</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Image PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>État du TAS : En cours d&apos;exécution %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>État du TAS : Enregistrement %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>État du TAS : Inactif %1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>État du TAS : Invalide</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Stopper l&apos;exécution</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Stopper l&apos;en&amp;registrement</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>En&amp;registrer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Compilation: %n shader</numerusform><numerusform>Compilation : %n shaders</numerusform><numerusform>Compilation : %n shaders</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Vitesse : %1% / %2% </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Vitesse : %1% </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Jeu : %1 IPS (Débloqué)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Jeu : %1 FPS </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame : %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>AUCUN AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME : MUET</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUME : %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmer la réinstallation de la clé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5839,37 +5839,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Fusibles manquants</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Composants de dérivation manquants</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5878,49 +5878,49 @@ 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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Installation des clés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Échec du déchiffrement de l&apos;archive système.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Les clés de chiffrement n&apos;ont pas réussi à déchiffrer le firmware. &lt;br&gt;Veuillez suivre &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;le guide de démarrage rapide du yuzu&lt;/a&gt; pour obtenir toutes vos clés, firmware et jeux.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<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="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6433,11 +6433,12 @@ Message de débogage : </translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Désactiver/Activer le son</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6460,117 +6461,116 @@ Message de débogage : </translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Fenêtre Principale</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Baisser le volume audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Augmenter le volume audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Prendre une capture d&apos;ecran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Modifier le filtre d&apos;adaptation</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Changer le mode de la station d&apos;accueil</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Modifier la précision du GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Continuer/Suspendre l&apos;Émulation</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Quitter le plein écran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Quitter yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Plein écran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Charger un fichier</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Charger/Supprimer un Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Redémarrer l&apos;Émulation</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Arrêter l&apos;Émulation</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Enregistrement TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Réinitialiser le TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Démarrer/Arrêter le TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Activer la barre de filtre</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Activer la limite de fréquence d&apos;images</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Activer le panoramique de la souris</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>Activer la capture renderdoc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Activer la barre d&apos;état</translation>
</message>
@@ -8136,7 +8136,7 @@ Veuillez essayer à nouveau ou contactez le développeur du logiciel.</translati
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8144,78 +8144,78 @@ Veuillez essayer à nouveau ou contactez le développeur du logiciel.</translati
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Utilisateurs</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Créateur de profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Sélecteur de profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Éditeur d&apos;icônes de profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Éditeur de surnom de profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Qui recevra les points ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Qui utilise le Nintendo eShop ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Qui effectue cet achat ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Qui publie ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Sélectionnez un utilisateur à associer à un compte Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Modifier les paramètres pour quel utilisateur ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Formater les données pour quel utilisateur ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Quel utilisateur sera transféré sur une autre console ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Envoyer les données de sauvegarde pour quel utilisateur ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Choisir un utilisateur :</translation>
</message>
diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts
index 7bba9294b..9254f1f3f 100644
--- a/dist/languages/hu.ts
+++ b/dist/languages/hu.ts
@@ -49,7 +49,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="23"/>
<source>Communicating with the server...</source>
- <translation>Kommunikáció a szerverrel...</translation>
+ <translation>Kommunikálás a szerverrel...</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="24"/>
@@ -138,7 +138,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="470"/>
<source>When you block a player, you will no longer receive chat messages from them.&lt;br&gt;&lt;br&gt;Are you sure you would like to block %1?</source>
- <translation>Ha blokkolsz egy játékost, akkor nem kaphatsz tőle üzeneteket.&lt;br&gt;&lt;br&gt;Biztos, hogy blokkolni szeretnéd %1-t?</translation>
+ <translation>Ha blokkolsz egy játékost, akkor nem kaphatsz tőle üzeneteket.&lt;br&gt;&lt;br&gt;Biztos, hogy blokkolni szeretnéd őt: %1?</translation>
</message>
<message>
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="483"/>
@@ -425,7 +425,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Backend:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -470,7 +470,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="68"/>
<source>Disable address space checks</source>
- <translation type="unfinished"/>
+ <translation>Címtartomány-ellenőrzések kikapcsolása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="69"/>
@@ -480,7 +480,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="73"/>
<source>Ignore global monitor</source>
- <translation type="unfinished"/>
+ <translation>Globális monitorozás mellőzése</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="74"/>
@@ -500,7 +500,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="81"/>
<source>Shader Backend:</source>
- <translation type="unfinished"/>
+ <translation>Árnyékoló Backend:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="82"/>
@@ -535,7 +535,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="88"/>
<source>Use disk pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Lemez pipeline gyorsítótár használata</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="89"/>
@@ -598,7 +598,7 @@ Immediate (no synchronization) just presents whatever is available and can exhib
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="115"/>
<source>Use asynchronous shader building (Hack)</source>
- <translation type="unfinished"/>
+ <translation>Aszinkron árnyékoló építés használata (Hack)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="116"/>
@@ -618,7 +618,7 @@ Immediate (no synchronization) just presents whatever is available and can exhib
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="121"/>
<source>Use Vulkan pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Vulkan pipeline gyorsítótár használata.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="122"/>
@@ -845,7 +845,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -955,7 +955,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="285"/>
<source>AMD FidelityFX™️ Super Resolution</source>
- <translation type="unfinished"/>
+ <translation>AMD FidelityFX™️ Super Resolution</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="289"/>
@@ -1383,7 +1383,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="399"/>
<source>Mono</source>
- <translation type="unfinished"/>
+ <translation>Mono</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="400"/>
@@ -1518,7 +1518,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>CPU Backend</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1867,7 +1867,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2156,7 +2156,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="168"/>
<source>Mod Load Root</source>
- <translation type="unfinished"/>
+ <translation>Mod betöltési gyökér</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="175"/>
@@ -2284,33 +2284,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Háttérszín:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Ki</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync Ki</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Ajánlott</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Be</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync Be</translation>
</message>
@@ -2997,7 +2997,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2007"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2046"/>
<source>SL</source>
- <translation type="unfinished"/>
+ <translation>SL</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1281"/>
@@ -3005,7 +3005,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2056"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2095"/>
<source>SR</source>
- <translation type="unfinished"/>
+ <translation>SR</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1385"/>
@@ -3019,7 +3019,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1479"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1346"/>
<source>ZL</source>
- <translation type="unfinished"/>
+ <translation>ZL</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1560"/>
@@ -3031,7 +3031,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1609"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1648"/>
<source>Capture</source>
- <translation type="unfinished"/>
+ <translation>Rögzítés</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1679"/>
@@ -3059,7 +3059,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1926"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1347"/>
<source>ZR</source>
- <translation type="unfinished"/>
+ <translation>ZR</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2164"/>
@@ -3144,7 +3144,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="397"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="669"/>
<source>Toggle button</source>
- <translation type="unfinished"/>
+ <translation>Gomb váltása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="403"/>
@@ -3173,12 +3173,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="439"/>
<source>Toggle axis</source>
- <translation type="unfinished"/>
+ <translation>Tengely váltása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="476"/>
<source>Set gyro threshold</source>
- <translation>Giro küszöbérték beállítása</translation>
+ <translation>Gyro küszöbérték beállítása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
@@ -3212,7 +3212,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="711"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1072"/>
<source>Modifier Range: %1%</source>
- <translation type="unfinished"/>
+ <translation>Módosító tartomány: %1%</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="752"/>
@@ -3223,7 +3223,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1101"/>
<source>Dual Joycons</source>
- <translation type="unfinished"/>
+ <translation>Dupla Joycon</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1105"/>
@@ -3380,7 +3380,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="6"/>
<source>Configure Motion / Touch</source>
- <translation type="unfinished"/>
+ <translation>Mozgás / Érintés konfigurálása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="15"/>
@@ -3407,7 +3407,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="57"/>
<source>Touch from button profile:</source>
- <translation type="unfinished"/>
+ <translation>Gomb profilból érintés:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="85"/>
@@ -3523,7 +3523,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
<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>Nem lehetett érvényes adatot fogadni a szervertől. &lt;br&gt;Ellenőrizze, hogy a szerver megfelelően van-e beállítva, valamint a cím és a port helyes.</translation>
+ <translation>Nem lehetett érvényes adatot fogadni a szervertől. &lt;br&gt;Ellenőrizd, hogy a szerver megfelelően van-e beállítva, valamint a cím és a port helyes.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="288"/>
@@ -3945,7 +3945,7 @@ UUID: %2</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.ui" line="26"/>
<source>To use Ring-Con, configure player 1 as right Joy-Con (both physical and emulated), and player 2 as left Joy-Con (left physical and dual emulated) before starting the game.</source>
- <translation type="unfinished"/>
+ <translation>A Ring-Con használatához konfiguráld az 1. játékost a jobb Joy-Conként (mind fizikai, mind emulált), és a 2. játékost a bal Joy-Conként (bal fizikai és dual emulált) még a játék indítása előtt.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.ui" line="52"/>
@@ -4040,12 +4040,12 @@ UUID: %2</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="302"/>
<source>The current mapped device doesn&apos;t support the ring controller</source>
- <translation type="unfinished"/>
+ <translation>A jelenleg hozzárendelt eszköz nem támogatja a ring vezérlőt.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="306"/>
<source>The current mapped device doesn&apos;t have a ring attached</source>
- <translation type="unfinished"/>
+ <translation>A jelenleg hozzárendelt eszközhöz nincs ring csatolva.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="309"/>
@@ -4163,12 +4163,12 @@ UUID: %2</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="14"/>
<source>Configure Touchscreen Mappings</source>
- <translation type="unfinished"/>
+ <translation>Érintőképernyő hozzárendelések konfigurálása</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="22"/>
<source>Mapping:</source>
- <translation type="unfinished"/>
+ <translation>Hozzárendelés:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="48"/>
@@ -4194,7 +4194,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.ui" line="116"/>
<source>Delete Point</source>
- <translation type="unfinished"/>
+ <translation>Pont törlése</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="78"/>
@@ -4819,574 +4819,575 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Játék közben</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Web applet betöltése...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Web applet letiltása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
- <translation type="unfinished"/>
+ <translation>A web applet letiltása nem kívánt viselkedéshez vezethet, és csak a Super Mario 3D All-Stars játékhoz ajánlott. Biztosan szeretnéd letiltani a web appletet?
+(Ezt újra engedélyezheted a Hibakeresés beállításokban.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>A jelenleg készülő árnyékolók mennyisége</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>A jelenleg kiválasztott felbontás skálázási aránya.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Jelenlegi emuláció sebessége. 100%-nál magasabb vagy alacsonyabb érték azt jelzi, hogy mennyivel gyorsabb vagy lassabb a Switch-nél.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>A másodpercenként megjelenített képkockák számát mutatja. Ez játékonként és jelenetenként eltérő lehet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Egy Switch-kép emulálásához szükséges idő, képkockaszám-korlátozás és v-sync nélkül. Teljes sebességű emulálás esetén ennek legfeljebb 16.67 ms-nak kell lennie.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Némítás feloldása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Némítás</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Hangerő visszaállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Legutóbbi fájlok törlése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Folytatás</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Szünet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Figyelmeztetés: Elavult játékformátum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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"/>
+ <translation>A dekonstruált ROM könyvtár formátumot használod ehhez a játékhoz, ami egy elavult formátum, melyet már felváltottak más formátumok, mint pl. NCA, NAX, XCI vagy NSP. A dekonstruált ROM könyvtárak nem tartalmaznak ikonokat, metaadatokat és frissítési támogatást.&lt;br&gt;&lt;br&gt;A yuzu által támogatott Switch formátumok ismertetéséhez &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;látogasd meg wikinket&lt;/a&gt;. Ez az üzenet nem jelenik meg újra.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Hiba történt a ROM betöltése során!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>A ROM formátum nem támogatott.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>Hiba történt a videómag inicializálásakor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Hiba történt a ROM betöltése során! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Ismeretlen hiba történt. Nyisd meg a logot a részletekért.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Szoftver bezárása...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Mentett adat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Modolt adat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Hiba törént a(z) %1 mappa megnyitása során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>A mappa nem létezik!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Nem sikerült létrehozni az árnyékoló gyorsítótár könyvtárat ehhez a játékhoz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Hiba történt a játéktartalom eltávolítása során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Hiba történt a frissítés eltávolítása során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Hiba történt a DLC eltávolítása során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Törlöd a telepített játéktartalmat?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Törlöd a telepített játékfrissítést?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Törlöd a telepített DLC-t?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Bejegyzés törlése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Sikeresen eltávolítva</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>A telepített alapjáték sikeresen el lett távolítva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Az alapjáték nincs telepítve a NAND-ra, ezért nem törölhető.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>A telepített frissítés sikeresen el lett távolítva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Nincs telepítve frissítés ehhez a játékhoz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Nincs telepítve DLC ehhez a játékhoz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 telepített DLC sikeresen eltávolítva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Törlöd az egyéni játék konfigurációt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Törlöd a gyorsítótárat?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Fájl eltávolítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Játékidő törlése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Visszaállítod a játékidőt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Ehhez a játékhoz nem létezik árnyékoló gyorsítótár.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Hiba történt az egyéni konfiguráció törlése során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Nem létezik egyéni konfiguráció ehhez a játékhoz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Egyéni játék konfiguráció sikeresen eltávolítva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Nem sikerült eltávolítani az egyéni játék konfigurációt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS kicsomagolása sikertelen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Hiba történt a RomFS fájlok másolása közben, vagy a felhasználó megszakította a műveletet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Teljes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Csontváz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Nincs elég hely a RomFS kibontásához itt: %1. Szabadítsd fel helyet, vagy válassz egy másik kimentési könyvtárat az Emuláció &gt; Konfigurálás &gt; Rendszer &gt; Fájlrendszer &gt; Kimentési gyökér menüpontban.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFS kicsomagolása...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Mégse</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS kibontása sikeres volt!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>A művelet sikeresen végrehajtva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Az integritás ellenőrzését nem lehetett elvégezni!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>A fájl tartalmának érvényessége nem lett ellenőrizve.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Az integritás ellenőrzése sikertelen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>A fájl tartalma sérült lehet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Integritás ellenőrzése...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Integritás ellenőrzése sikeres!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Parancsikon létrehozása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
- <translation>Teljes képernyőn szeretnéd elindítani a játékot?</translation>
+ <translation>Szeretnéd teljes képernyőn elindítani a játékot?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Parancsikon sikeresen létrehozva ide %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Ez létrehoz egy parancsikont az aktuális AppImage-hez. Frissítés után nem garantált a helyes működése. Folytatod?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>Nem sikerült létrehozni a parancsikont: %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Ikon létrehozása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Nem hozható létre az ikonfájl. Az útvonal &quot;%1&quot; nem létezik és nem is hozható létre.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Hiba a %1 megnyitásakor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Könyvtár kiválasztása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Tulajdonságok</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>A játék tulajdonságait nem sikerült betölteni.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch állományok(%1);;Minden fájl (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Fájl betöltése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Kicsomagolt ROM könyvár megnyitása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Érvénytelen könyvtár kiválasztva</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>A kiválasztott könyvtár nem tartalmaz &apos;main&apos; fájlt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Telepíthető Switch fájl (*.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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Fájlok telepítése</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n fájl van hátra</numerusform><numerusform>%n fájl van hátra</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot; fájl telepítése...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Telepítés eredménye</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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>A lehetséges konfliktusok elkerülése érdekében nem javasoljuk a felhasználóknak, hogy a NAND-ra telepítsék az alapjátékokat.
Kérjük, csak frissítések és DLC-k telepítéséhez használd ezt a funkciót.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n fájl lett frissen telepítve
@@ -5394,7 +5395,7 @@ Kérjük, csak frissítések és DLC-k telepítéséhez használd ezt a funkció
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n fájl lett felülírva
@@ -5402,201 +5403,201 @@ Kérjük, csak frissítések és DLC-k telepítéséhez használd ezt a funkció
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n fájl telepítése sikertelen</numerusform><numerusform>%n fájl telepítése sikertelen
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Rendszeralkalmazás</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Rendszerarchívum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Rendszeralkalmazás frissítés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware csomag (A típus)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware csomag (B típus)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Játék</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Játékfrissítés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Játék DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>NCA telepítési típus kiválasztása...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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>Kérjük, válaszd ki, hogy milyen típusú címként szeretnéd telepíteni ezt az NCA-t:
(A legtöbb esetben az alapértelmezett &quot;Játék&quot; megfelelő.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Nem sikerült telepíteni</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Az NCA-hoz kiválasztott címtípus érvénytelen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Fájl nem található</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>&quot;%1&quot; fájl nem található</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>A hardverkövetelmények nem teljesülnek</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Az eszközöd nem felel meg az ajánlott hardverkövetelményeknek. A kompatibilitás jelentése letiltásra került.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Hiányzó yuzu fiók</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Hiba történt az URL megnyitása során</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Hiba történt az URL megnyitása során: &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS felvétel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Felülírod az 1. játékos fájlját?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Érvénytelen konfig észlelve</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>A kézi vezérlés nem használható dokkolt módban. Helyette a Pro kontroller lesz kiválasztva.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>A jelenlegi amiibo el lett távolítva</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>A jelenlegi játék nem keres amiibo-kat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo fájl (%1);; Minden fájl (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Amiibo betöltése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Amiibo adatok betöltése sikertelen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>A kiválasztott fájl nem érvényes amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>A kiválasztott fájl már használatban van</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ismeretlen hiba történt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5605,193 +5606,193 @@ Kérjük, csak frissítések és DLC-k telepítéséhez használd ezt a funkció
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Nincs elérhető firmware</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Kérjük, telepítsd a firmware-t az Album applet használatához.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Album applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>Album applet nem elérhető. Kérjük, telepítsd újra a firmware-t.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Kérjük, telepítsd a firmware-t a kabinet applet használatához.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Kabinet applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>Kabinet applet nem elérhető. Kérjük, telepítsd újra a firmware-t.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Kérjük, telepítsd a firmware-t a Mii-szerkesztő használatához.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii szerkesztő applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>A Mii szerkesztő nem elérhető. Kérjük, telepítsd újra a firmware-t.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>Kérjük, telepítsd a firmware-t a vezérlő menü használatához.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Vezérlő applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>A vezérlő menü nem érhető el. Kérjük, telepítsd újra a firmware-t.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Képernyőkép készítése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG kép (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS állapot: %1/%2 futtatása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS állapot: %1 felvétele</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS állapot: Tétlen %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS állapot: Érvénytelen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Futás leállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Indítás</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>F&amp;elvétel leállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>F&amp;elvétel</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Létrehozás: %n árnyékoló</numerusform><numerusform>Létrehozás: %n árnyékoló</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Skálázás: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Sebesség: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Sebesség: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Játék: %1 FPS (Feloldva)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Játék: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Képkocka: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>Nincs élsimítás</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>HANGERŐ: NÉMÍTVA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>HANGERŐ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Kulcs újragenerálásának megerősítése</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5808,37 +5809,37 @@ Kérljük, győződj meg róla, hogy ezt szeretnéd,
Ez törli az automatikusan generált kulcsfájlokat, és újraindítja a kulcsgeneráló modult.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Hiányzó BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Hiányzó BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Hiányzó PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Hiányzó titkosítási kulcsok. &lt;br&gt;Kérjük, kövesd a &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu gyorstájékoztatóját&lt;/a&gt;, hogy megszerezd az összes kulcsot, firmware-t és játékot.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5847,49 +5848,49 @@ Ez akár egy percet is igénybe vehet,
rendszered teljesítményétől függően.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Kulcsok generálása</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Rendszerarchívum visszafejtése sikertelen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Kérjük, válaszd ki melyik RomFS-t szeretnéd kimenteni.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Biztosan be akarod zárni a yuzut?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Biztos le akarod állítani az emulációt? Minden nem mentett adat el fog veszni.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6058,12 +6059,12 @@ Mégis ki szeretnél lépni?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="548"/>
<source>Open Save Data Location</source>
- <translation type="unfinished"/>
+ <translation>Mentett adatok helyének megnyitása</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="549"/>
<source>Open Mod Data Location</source>
- <translation type="unfinished"/>
+ <translation>Modadatok helyének megnyitása</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="551"/>
@@ -6402,11 +6403,12 @@ Hibakereső üzenet:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Hang némítása/feloldása</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6429,117 +6431,116 @@ Hibakereső üzenet:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Főablak</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Hangerő csökkentése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Hangerő növelése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Képernyőkép készítése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Ablakadaptív szűrő módosítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Dokkolt mód módosítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>GPU pontosság módosítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Emuláció folytatása/szüneteltetése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Kilépés a teljes képernyőből</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Kilépés a yuzuból</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Teljes képernyő</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Fájl betöltése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Amiibo betöltése/törlése</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Emuláció újraindítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Emulácíó leállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS felvétel</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS visszaállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS indítása/leállítása</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Szűrősáv kapcsoló</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Képfrissítési korlát kapcsoló</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Egérpásztázás kapcsoló</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>Renderdoc felvétel kapcsoló</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Állapotsáv kapcsoló</translation>
</message>
@@ -6844,7 +6845,7 @@ Hibakereső üzenet:</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="252"/>
<source>Con&amp;figure...</source>
- <translation>Kon&amp;figurálás</translation>
+ <translation>Kon&amp;figurálás...</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="263"/>
@@ -6884,7 +6885,7 @@ Hibakereső üzenet:</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="311"/>
<source>&amp;Direct Connect to Room</source>
- <translation>&amp;Közvetlen csatlakozás a szobához</translation>
+ <translation>&amp;Közvetlen csatlakozás szobához</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="319"/>
@@ -7594,22 +7595,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="73"/>
<source>ZR</source>
- <translation type="unfinished"/>
+ <translation>ZR</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="75"/>
<source>ZL</source>
- <translation type="unfinished"/>
+ <translation>ZL</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="77"/>
<source>SR</source>
- <translation type="unfinished"/>
+ <translation>SR</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="79"/>
<source>SL</source>
- <translation type="unfinished"/>
+ <translation>SL</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="81"/>
@@ -7640,7 +7641,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="101"/>
<source>Capture</source>
- <translation type="unfinished"/>
+ <translation>Rögzítés</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="129"/>
@@ -7861,7 +7862,7 @@ p, li { white-space: pre-wrap; }
<location filename="../../src/yuzu/applets/qt_controller.ui" line="2059"/>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="469"/>
<source>Dual Joycons</source>
- <translation type="unfinished"/>
+ <translation>Dupla Joycon</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="524"/>
@@ -8105,7 +8106,7 @@ Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével.</
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8113,78 +8114,78 @@ Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével.</
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Felhasználók</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Profil készítő</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profil kiválasztó</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Profil ikonszerkesztő</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Profil becenév szerkesztő</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Ki kapja meg a pontokat?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Ki használja a Nintendo eShopot?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Ki végzi el a vásárlást?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Ki posztol?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Válassz ki egy felhasználót a Nintendo fiókkal való összekapcsoláshoz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Melyik felhasználó beállításait változtassuk meg?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Melyik felhasználó adatait formázzuk?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Melyik felhasználó lesz átköltöztetve a másik konzolra?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Melyik felhasználóhoz küldjük a mentési adatokat?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Válassz egy felhasználót:</translation>
</message>
diff --git a/dist/languages/id.ts b/dist/languages/id.ts
index d638871e9..639280ea6 100644
--- a/dist/languages/id.ts
+++ b/dist/languages/id.ts
@@ -1856,7 +1856,7 @@ Memungkinkan berbagai macam optimasi IR.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2273,33 +2273,33 @@ Memungkinkan berbagai macam optimasi IR.</translation>
<translation>Warna Latar:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Mati</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Direkomendasikan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Nyala</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -4806,974 +4806,974 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Memuat Applet Web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Matikan Applet Web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Jumlah shader yang sedang dibuat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Pengali skala resolusi yang terpilih.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Kecepatan emulasi saat ini. Nilai yang lebih tinggi atau rendah dari 100% menandakan pengemulasian berjalan lebih cepat atau lambat dibanding Switch aslinya.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Berapa banyak frame per second (bingkai per detik) permainan akan ditampilkan. Ini akan berubah dari berbagai permainan dan pemandangan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Membunyikan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Bisukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Atur ulang tingkat suara</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Bersihkan Berkas Baru-baru Ini</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Lanjutkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Jeda</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Peringatan Format Permainan yang Usang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Kesalahan ketika memuat ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Format ROM tak didukung.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Simpan Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Gagal Membuka Folder %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Folder tak ada!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Error saat menghapus konten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Error saat menghapus Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Error saat menghapus DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Hapus Konten Game yang terinstall?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Hapus Update Game yang terinstall?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Hapus DLC Game yang terinstall?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Hapus Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Berhasil menghapus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Hapus File</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Kesalahan Menghapus Transferable Shader Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Kesalahan Menghapus Konfigurasi Buatan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Pengekstrakan RomFS Gagal!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Penuh</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Skeleton</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Pilih Mode Dump RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Mengekstrak RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Batal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Pengekstrakan RomFS Berhasil!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Operasi selesai dengan sukses,</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Buat Pintasan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Buat ikon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Gagal membuka %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Pilih Direktori</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Properti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Muat Berkas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Buka Direktori ROM Terekstrak</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Direktori Terpilih Tidak Sah</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Install File</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Memasang berkas &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Hasil Install</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplikasi Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Arsip Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Pembaruan Aplikasi Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Paket Perangkat Tegar (Tipe A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Paket Perangkat Tegar (Tipe B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Pembaruan Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Judul Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Pilih Tipe Pemasangan NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Gagal Memasang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Berkas tak ditemukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Akun yuzu Hilang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Kesalahan saat membuka URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Rekaman TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Timpa file pemain 1? </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Konfigurasi tidak sah terdeteksi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Berkas Amiibo (%1);; Semua Berkas (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Muat Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Gagal memuat data Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Tangkapan Layar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Berkas PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Status TAS: Berjalan %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Status TAS: Merekam %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Status TAS: Diam %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Status TAS: Tidak Valid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Matikan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Mulai</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Berhenti Mer&amp;ekam</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>R&amp;ekam</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Membangun: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Kecepatan: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Kecepatan: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Permainan: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>TANPA AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME : SENYAP</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5784,37 +5784,37 @@ 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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Kehilangan BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Kehilangan BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- Kehilangan PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5823,49 +5823,49 @@ Ini mungkin memakan waktu hingga satu menit
tergantung dari sistem performa Anda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Pilih Target Dump RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Silahkan pilih jenis RomFS yang ingin Anda buang.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Apakah Anda yakin untuk menghentikan emulasi? Setiap progres yang tidak tersimpan akan hilang.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6375,11 +6375,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6402,117 +6403,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Tangkapan Layar</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Muat Berkas</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -8063,7 +8063,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8071,78 +8071,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Pengguna</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Pemilih Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Pilih akun:</translation>
</message>
diff --git a/dist/languages/it.ts b/dist/languages/it.ts
index da122d7dc..8c26211aa 100644
--- a/dist/languages/it.ts
+++ b/dist/languages/it.ts
@@ -455,7 +455,7 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP.</trans
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="63"/>
<source>This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.</source>
- <translation>Questa opzione migliora la velocità delle funzioni in virgola mobile ASIMD a 32 bit eseguendole con modalità di arrotondamento non corrette. </translation>
+ <translation>Questa opzione migliora la velocità delle funzioni in virgola mobile ASIMD a 32 bit eseguendole con modalità di arrotondamento non corrette.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="65"/>
@@ -1897,7 +1897,7 @@ Le compute pipeline sono sempre abilitate su tutti gli altri driver.</translatio
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Le compute pipeline sono sempre abilitate su tutti gli altri driver.</translatio
<translation>Colore dello sfondo:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Disattivato</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync disattivato</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Consigliata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Attivato</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync attivato</translation>
</message>
@@ -4854,18 +4854,18 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab
<translation>Gioco in esecuzione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Caricamento dell&apos;applet web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Disabilita l&apos;applet web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Disabilitare l&apos;applet web potrebbe causare dei comportamenti indesiderati.
@@ -4873,558 +4873,558 @@ Da usare solo con Super Mario 3D All-Stars. Sei sicuro di voler procedere?
(Puoi riabilitarlo quando vuoi nelle impostazioni di Debug.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Il numero di shader in fase di compilazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Il moltiplicatore corrente dello scaling della risoluzione.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Velocità corrente dell&apos;emulazione. Valori più alti o più bassi di 100% indicano che l&apos;emulazione sta funzionando più velocemente o lentamente rispetto a una Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Il numero di fotogrammi al secondo che il gioco visualizza attualmente. Può variare in base al gioco e alla situazione.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Tempo necessario per emulare un fotogramma della Switch, senza tenere conto del limite al framerate o del V-Sync. Per un&apos;emulazione alla massima velocità, il valore non dovrebbe essere superiore a 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Riattiva</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Silenzia</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Reimposta volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Cancella i file recenti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continua</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Formato del gioco obsoleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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 contenente una ROM decostruita per avviare questo gioco, che è un formato obsoleto e sostituito da NCA, NAX, XCI o NSP. Le ROM decostruite non hanno icone, metadati e non supportano gli aggiornamenti. &lt;br&gt;&lt;br&gt;Per una spiegazione sui vari formati della Switch supportati da yuzu, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;consulta la nostra wiki (in inglese)&lt;/a&gt;. Non riceverai di nuovo questo avviso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Errore nel caricamento della ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>È stato riscontrato un errore nell&apos;inizializzazione del core video.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 riscontrato un problema durante l&apos;avvio del core video. Di solito questo errore è causato da driver GPU obsoleti, compresi quelli integrati.
Consulta il log per maggiori dettagli. Se hai bisogno di aiuto per accedere ai log, consulta questa pagina (in inglese): &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Come caricare i file di log&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;Segui &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guida introduttiva di yuzu&lt;/a&gt; per rifare il dump dei file.&lt;br&gt;Puoi dare un occhiata alla wiki di yuzu (in inglese)&lt;/a&gt; o al server Discord di yuzu&lt;/a&gt; per assistenza.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Si è verificato un errore sconosciuto. Visualizza il log per maggiori dettagli.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Chiusura del software in corso...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Dati di salvataggio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dati delle mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Impossibile aprire la cartella %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>La cartella non esiste!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Impossibile aprire la cache trasferibile degli shader</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Impossibile creare la cartella della cache degli shader per questo titolo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Impossibile rimuovere il contentuto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Impossibile rimuovere l&apos;aggiornamento</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Impossibile rimuovere il DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Rimuovere il contenuto del gioco installato?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Rimuovere l&apos;aggiornamento installato?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Rimuovere il DLC installato?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Rimuovi voce</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Rimozione completata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Il gioco base installato è stato rimosso con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Aggiornamento rimosso con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 DLC rimossi con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Vuoi rimuovere la cache trasferibile degli shader OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Vuoi rimuovere la cache trasferibile degli shader Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Vuoi rimuovere tutte le cache trasferibili degli shader?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Rimuovere la configurazione personalizzata del gioco?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Rimuovere la Storage Cache?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Rimuovi file</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Reimposta il tempo di gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Vuoi reimpostare il tempo di gioco?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Impossibile rimuovere la cache trasferibile degli shader</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Per questo titolo non esiste una cache degli shader.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>La cache trasferibile degli shader è stata rimossa con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Impossibile rimuovere la cache trasferibile degli shader.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Impossibile rimuovere la cache delle pipeline del driver Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Impossibile rimuovere la cache delle pipeline del driver.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Impossibile rimuovere le cache trasferibili degli shader</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Le cache trasferibili degli shader sono state rimosse con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Impossibile rimuovere la cartella della cache trasferibile degli shader.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Impossibile rimuovere la configurazione personalizzata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Non esiste una configurazione personalizzata per questo gioco.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>La configurazione personalizzata del gioco è stata rimossa con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Estrazione RomFS fallita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Cartelle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Seleziona la modalità di estrazione della RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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 la RomFS. &lt;br&gt;La modalità Completa copierà tutti i file in una nuova cartella mentre&lt;br&gt;la modalità Cartelle creerà solamente le cartelle e le sottocartelle.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Non c&apos;è abbastanza spazio disponibile nel disco %1 per estrarre la RomFS. Libera lo spazio o seleziona una cartella di estrazione diversa in Emulazione &gt; Configura &gt; Sistema &gt; File system &gt; Cartella di estrazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Estrazione RomFS in corso...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Annulla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Estrazione RomFS riuscita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>L&apos;operazione è stata completata con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Impossibile verificare l&apos;integrità dei file.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>I contenuti di questo file non sono stati verificati.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Verifica dell&apos;integrità fallita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>I contenuti del file potrebbero essere corrotti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Verifica dell&apos;integrità della ROM in corso...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Verifica dell&apos;integrità completata con successo!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Crea scorciatoia</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>Vuoi avviare il gioco a schermo intero?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Scorciatoia creata con successo in %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Verrà creata una scorciatoia all&apos;AppImage attuale. Potrebbe non funzionare correttamente se effettui un aggiornamento. Vuoi continuare?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>Impossibile creare la scorciatoia in %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Crea icona</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Impossibile creare il file dell&apos;icona. Il percorso &quot;%1&quot; non esiste e non può essere creato.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Impossibile aprire %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Seleziona cartella</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Proprietà</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Non è stato possibile caricare le proprietà del gioco.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Carica file</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Apri cartella ROM estratta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Cartella selezionata non valida</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Installa file</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n file rimanente</numerusform><numerusform>%n file rimanenti</numerusform><numerusform>%n file rimanenti</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installazione del file &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Risultati dell&apos;installazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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, sconsigliamo di installare i giochi base su NAND.
Usa questa funzione solo per installare aggiornamenti e DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n nuovo file è stato installato
@@ -5433,7 +5433,7 @@ Usa questa funzione solo per installare aggiornamenti e DLC.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n file è stato sovrascritto
@@ -5442,7 +5442,7 @@ Usa questa funzione solo per installare aggiornamenti e DLC.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n file non è stato installato a causa di errori
@@ -5451,195 +5451,195 @@ Usa questa funzione solo per installare aggiornamenti e DLC.</translation>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Applicazione di sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Archivio di sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Aggiornamento di un&apos;applicazione di sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Pacchetto firmware (tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Pacchetto firmware (tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Aggiornamento di gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Titolo delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Seleziona il tipo di installazione NCA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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 valore predefinito &apos;Gioco&apos; va bene.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Installazione fallita</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>File non trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Requisiti hardware non soddisfatti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Il tuo sistema non soddisfa i requisiti hardware consigliati. La funzionalità di segnalazione della compatibilità è stata disattivata.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Account di yuzu non trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Impossibile aprire l&apos;URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Non è stato possibile aprire l&apos;URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Registrazione TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Vuoi sovrascrivere il file del giocatore 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Rilevata configurazione non valida</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Il controller portatile non può essere utilizzato in modalità dock. Verrà selezionato il controller Pro.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>L&apos;Amiibo corrente è stato rimosso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Il gioco in uso non è alla ricerca di Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>File Amiibo (%1);; Tutti i file (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Carica Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Impossibile caricare i dati dell&apos;Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Il file selezionato non è un Amiibo valido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Il file selezionato è già in uso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Si è verificato un errore sconosciuto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5648,193 +5648,193 @@ Configurazione &amp;gt; Web.</translation>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Nessun firmware disponibile</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Devi installare il firmware per usare l&apos;applet dell&apos;album.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Applet Album</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>L&apos;applet dell&apos;album non è disponibile. Reinstalla il firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Devi installare il firmware per usare l&apos;applet Cabinet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Applet Cabinet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>L&apos;applet del Cabinet non è disponibile. Reinstalla il firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Devi installare il firmware per usare l&apos;editor dei Mii.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Editor dei Mii</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>L&apos;editor dei Mii non è disponibile. Reinstalla il firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>Devi installare il firmware per usare il menù dei controller.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>Il menù dei controller non è disponibile. Reinstalla il firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Cattura screenshot</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Immagine PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Stato TAS: In esecuzione (%1/%2)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Stato TAS: Registrazione in corso (%1)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Stato TAS: In attesa (%1/%2)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Stato TAS: Non valido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Interrompi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Avvia</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Interrompi r&amp;egistrazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>R&amp;egistra</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Compilazione di %n shader</numerusform><numerusform>Compilazione di %n shader</numerusform><numerusform>Compilazione di %n shader</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Risoluzione: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Velocità: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Velocità: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Gioco: %1 FPS (Sbloccati)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Gioco: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME: MUTO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUME: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Conferma ri-derivazione chiavi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5851,37 +5851,37 @@ Se sei sicuro di voler procedere,
Questa azione eliminerà i tuoi file delle chiavi autogenerati e ripeterà il processo di derivazione delle chiavi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Fusi mancanti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 mancante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main mancante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO mancante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Componenti di derivazione mancanti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Chiavi di crittografia mancanti. &lt;br&gt;Segui &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guida introduttiva di yuzu&lt;/a&gt; per ottenere tutte le tue chiavi, il firmware e i giochi.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5890,49 +5890,49 @@ 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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Derivazione chiavi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Decrittazione dell&apos;archivio di sistema fallita</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Le chiavi di crittografia non sono riuscite a decrittare il firmware. &lt;br&gt;Segui &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guida introduttiva di yuzu&lt;/a&gt; per estrarre tutte le tue chiavi, il firmware e i giochi dalla tua Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Seleziona Target dell&apos;Estrazione del RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Sei sicuro di voler arrestare l&apos;emulazione? Tutti i progressi non salvati verranno perduti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6445,11 +6445,12 @@ Messaggio di debug:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Attiva/disattiva l&apos;audio</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6472,117 +6473,116 @@ Messaggio di debug:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Finestra principale</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Abbassa il volume dell&apos;audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Alza il volume dell&apos;audio</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Cattura screenshot</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Cambia filtro di adattamento</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Cambia modalità console</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Cambia accuratezza GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Continua/Metti in pausa l&apos;emulazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Esci dalla modalità schermo intero</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Esci da yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Schermo intero</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Carica file</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Carica/Rimuovi Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Riavvia l&apos;emulazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Arresta l&apos;emulazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Registra TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Reimposta TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Avvia/interrompi TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Mostra/nascondi la barra del filtro</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Attiva/disattiva il limite del framerate</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Attiva/disattiva il mouse panning</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Mostra/nascondi la barra di stato</translation>
</message>
@@ -8148,7 +8148,7 @@ Riprova o contatta gli sviluppatori del programma.</translation>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8156,78 +8156,78 @@ Riprova o contatta gli sviluppatori del programma.</translation>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Utenti</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Creatore Profilo</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Selettore profili</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Editor Icona del Profilo</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Editor Nickname del Profilo</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Chi riceverà i punti?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Chi sta usando il Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Chi sta acquistando questo titolo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Chi sta postando?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Seleziona un utente da collegare ad un Account Nintendo</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Per quale utente vuoi modificare le impostazioni?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>A quale utente verranno formattati i dati?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Quale utente verrà trasferito ad un altra console?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>A quale utente vuoi inviare i dati di salvataggio?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Seleziona un utente:</translation>
</message>
diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts
index b650f9e90..c7f7fa3a7 100644
--- a/dist/languages/ja_JP.ts
+++ b/dist/languages/ja_JP.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>背景色:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>オフ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync オフ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>推奨</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>オン</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync オン</translation>
</message>
@@ -4849,783 +4849,783 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Webアプレットをロード中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Webアプレットの無効化</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Webアプレットを無効にすると、未定義の動作になる可能性があるため、スーパーマリオ3Dオールスターズでのみ使用するようにしてください。本当にWebアプレットを無効化しますか?
(デバッグ設定で再度有効にすることができます)。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>ビルド中のシェーダー数</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>現在選択されている解像度の倍率。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>現在のエミュレーション速度。値が100%より高いか低い場合、エミュレーション速度がSwitchより速いか遅いことを示します。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>ゲームが現在表示している1秒あたりのフレーム数。これはゲームごと、シーンごとに異なります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Switchフレームをエミュレートするのにかかる時間で、フレームリミットやV-Syncは含まれません。フルスピードエミュレーションの場合、最大で16.67ミリ秒になります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>消音解除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>消音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>音量をリセット</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>最近のファイルをクリア(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>再開(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>中断(&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>古いゲームフォーマットの警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>ROMロード中にエラーが発生しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>このROMフォーマットはサポートされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>ビデオコア初期化中にエラーが発生しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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も含め、古い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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;yuzu Discord&lt;/a&gt;を参照するとよいでしょう。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>不明なエラーが発生しました。詳細はログを確認して下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>ソフトウェアを終了中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>データのセーブ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Modデータ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>”%1”フォルダを開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>フォルダが存在しません!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>シェーダーキャッシュを開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>このタイトル用のシェーダーキャッシュディレクトリの作成に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>コンテンツの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>アップデートの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>DLC の削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>インストールされたゲームのコンテンツを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>インストールされたゲームのアップデートを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>インストールされたゲームの DLC を削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>エントリ削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>削除しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>インストールされたゲームを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>インストールされたアップデートを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>このタイトルのアップデートはインストールされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>このタイトルにはDLCがインストールされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1にインストールされたDLCを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>OpenGLシェーダーキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Vulkanシェーダーキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>すべてのシェーダーキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>このタイトルのカスタム設定を削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>キャッシュストレージを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>ファイル削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>プレイ時間情報を削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>プレイ時間をリセットしますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>シェーダーキャッシュの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>このタイトル用のシェーダーキャッシュは存在しません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>シェーダーキャッシュを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>シェーダーキャッシュの削除に失敗しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>シェーダーキャッシュの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>シェーダーキャッシュを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>シェーダーキャッシュディレクトリの削除に失敗しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>カスタム設定の削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>このタイトルのカスタム設定は存在しません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>カスタム設定を正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>カスタム設定の削除に失敗しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFSの抽出に失敗しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>フル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>スケルトン</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFSダンプモードの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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 を展開するための十分な空き領域がありません。Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root で、空き容量を確保するか、別のダンプディレクトリを選択してください。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFSを抽出中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS抽出成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>操作は成功しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>整合性の確認を実行できませんでした!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>ファイルの妥当性は確認されませんでした.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>整合性の確認に失敗しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>ファイルが破損しているかもしれません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>整合性を確認中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>整合性の確認に成功しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>ショートカットを作成</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>フルスクリーンでゲームを起動しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>%1 へのショートカット作成に成功しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>これにより、現在のAppImageへのショートカットが作成されます。アップデートした場合、うまく動作しなくなる可能性があります。続行しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>%1 へのショートカット作成に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>アイコンを作成</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>”%1”を開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>ディレクトリの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>プロパティ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>ゲームプロパティをロード出来ませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>ファイルのロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>展開されているROMディレクトリを開く</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>無効なディレクトリが選択されました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>ファイルのインストール</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>残り %n ファイル</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot;ファイルをインストールしています・・・</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>インストール結果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n ファイルが新たにインストールされました
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n ファイルが上書きされました
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n ファイルのインストールに失敗しました
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>システムアプリケーション</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>システムアーカイブ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>システムアプリケーションアップデート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>ファームウェアパッケージ(Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>ファームウェアパッケージ(Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>ゲーム</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>ゲームアップデート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>ゲームDLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>差分タイトル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>NCAインストール種別を選択・・・</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>インストール失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>選択されたNCAのタイトル種別が無効です。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>ファイルが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>ファイル”%1”が存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>お使いのシステムは推奨ハードウェア要件を満たしていません。互換性レポートは無効になっています。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>yuzuアカウントが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>URLオープンエラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation> TAS 記録中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>プレイヤー1のファイルを上書きしますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>無効な設定を検出しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>現在の amiibo は削除されました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>現在のゲームはamiiboを要求しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>amiiboファイル (%1);;すべてのファイル (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>amiiboのロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>amiiboデータ読み込み中にエラーが発生しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>選択されたファイルは有効な amiibo ではありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>選択されたファイルはすでに使用中です</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>不明なエラーが発生しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5634,193 +5634,193 @@ Please, only use this feature to install updates and DLC.</source>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>ファームウェアがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>アルバム アプレットを使用するにはファームウェアをインストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>アルバムアプレット</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>アルバムアプレットは利用可能ではありません. ファームウェアを再インストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>キャビネットアプレット</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>キャビネットアプレットは利用可能ではありません. ファームウェアを再インストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Mii エディタを使用するにはファームウェアをインストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii 編集アプレット</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>Mii エディタは利用可能ではありません. ファームウェアを再インストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>コントローラーメニューを使用するにはファームウェアをインストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>コントローラー アプレット</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>コントローラーメニューは利用可能ではありません. ファームウェアを再インストールしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>スクリーンショットのキャプチャ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG画像 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 状態: 実行中 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS 状態: 記録中 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 状態: アイドル %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS 状態: 無効</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>実行停止(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>実行(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>記録停止(&amp;R)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>記録(&amp;R)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>構築中: %n 個のシェーダー</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>拡大率: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>速度:%1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>速度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Game: %1 FPS(制限解除)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>ゲーム:%1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>フレーム:%1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>音量: ミュート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>音量: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>キーの再取得確認</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5837,37 +5837,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>ヒューズがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0がありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Mainがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFOがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>派生コンポーネントがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5876,49 +5876,49 @@ on your system&apos;s performance.</source>
1分以上かかります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>派生キー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>システムアーカイブの復号に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>RomFSダンプターゲットの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>ダンプしたいRomFSを選択して下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>yuzuを終了しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6431,11 +6431,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>音声ミュート/解除</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6458,117 +6459,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>メイン画面</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>音量を下げる</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>音量を上げる</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>スクリーンショットを撮る</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>適応フィルターの変更</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>ドックモードを変更</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>GPU精度を変更</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>エミュレーションの一時停止/再開</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>フルスクリーンをやめる</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>yuzuを終了</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>フルスクリーン</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>ファイルのロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>読み込み/解除 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>エミュレーションをリスタート</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>エミュレーションをやめる</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS 記録</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS リセット</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS 開始/停止</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>フィルターバー切り替え</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>フレームレート制限切り替え</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>ステータスバー切り替え</translation>
</message>
@@ -8133,7 +8133,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8141,78 +8141,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>ユーザー</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>プロファイル選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>プロファイル アイコンエディタ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>プロファイル ニックネームエディタ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>誰が Nintendo eShop を使用しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>誰が支払いを行いますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Nintendo アカウントと紐づけるユーザを選択してください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>どのユーザの設定を変更しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>どのユーザのデータをフォーマットしますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>どのユーザを別のコンソールに転送しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>どのユーザにセーブデータを送信しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>ユーザー選択:</translation>
</message>
diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts
index d60d15ef9..a7f9b5067 100644
--- a/dist/languages/ko_KR.ts
+++ b/dist/languages/ko_KR.ts
@@ -1898,7 +1898,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2315,33 +2315,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>배경색:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>끔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>수직동기화 끔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>추천</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>켬</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>수직동기화 켬</translation>
</message>
@@ -4850,976 +4850,976 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>게임 실행중</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>웹 애플릿을 로드하는 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>웹 애플릿 비활성화</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>웹 애플릿을 비활성화하면 정의되지 않은 동작이 발생할 수 있으며 Super Mario 3D All-Stars에서만 사용해야 합니다. 웹 애플릿을 비활성화하시겠습니까?
(디버그 설정에서 다시 활성화할 수 있습니다.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>현재 생성중인 셰이더의 양</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>현재 선택된 해상도 배율입니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>현재 에뮬레이션 속도. 100%보다 높거나 낮은 값은 에뮬레이션이 Switch보다 빠르거나 느린 것을 나타냅니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>게임이 현재 표시하고 있는 초당 프레임 수입니다. 이것은 게임마다 다르고 장면마다 다릅니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>프레임 제한이나 수직 동기화를 계산하지 않고 Switch 프레임을 에뮬레이션 하는 데 걸린 시간. 최대 속도로 에뮬레이트 중일 때에는 대부분 16.67 ms 근처입니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>음소거 해제</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>음소거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>볼륨 재설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>Clear Recent Files(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>재개(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>일시중지(&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>오래된 게임 포맷 경고</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>ROM 로드 중 오류 발생!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>지원되지 않는 롬 포맷입니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>비디오 코어를 초기화하는 동안 오류가 발생했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>알 수 없는 오류가 발생했습니다. 자세한 내용은 로그를 참고하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64비트)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32비트)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>소프트웨어를 닫는 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>세이브 데이터</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>모드 데이터</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>%1 폴더 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>폴더가 존재하지 않습니다!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>전송 가능한 셰이더 캐시 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>이 타이틀에 대한 셰이더 캐시 디렉토리를 생성하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>콘텐츠 제거 중 오류 발생</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>업데이트 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>DLC 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>설치된 게임 콘텐츠를 제거하겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>설치된 게임 업데이트를 제거하겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>설치된 게임 DLC를 제거하겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>항목 제거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>삭제 완료</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>설치된 기본 게임을 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>설치된 업데이트를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>이 타이틀에 대해 설치된 업데이트가 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>이 타이틀에 설치된 DLC가 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>설치된 %1 DLC를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>OpenGL 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Vulkan 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>모든 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>사용자 지정 게임 구성을 제거 하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>캐시 저장소를 제거하겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>파일 제거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>전송 가능한 셰이더 캐시 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>이 타이틀에 대한 셰이더 캐시가 존재하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>전송 가능한 셰이더 캐시를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>전송 가능한 셰이더 캐시를 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Vulkan 드라이버 파이프라인 캐시 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>드라이버 파이프라인 캐시를 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>전송 가능한 셰이더 캐시 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>전송 가능한 셰이더 캐시를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>전송 가능한 셰이더 캐시 디렉토리를 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>사용자 지정 구성 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>이 타이틀에 대한 사용자 지정 구성이 존재하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>사용자 지정 게임 구성을 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>사용자 지정 게임 구성을 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 추출 실패!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>전체</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>뼈대</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS 덤프 모드 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFS 추출 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>취소</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 추출이 성공했습니다!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>작업이 성공적으로 완료되었습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>바로가기 만들기</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>%1 바로가기를 성공적으로 만듬</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>현재 AppImage에 대한 바로 가기가 생성됩니다. 업데이트하면 제대로 작동하지 않을 수 있습니다. 계속합니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>아이콘 만들기</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>아이콘 파일을 만들 수 없습니다. 경로 &quot;%1&quot;이(가) 존재하지 않으며 생성할 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>%1 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>경로 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>속성</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>게임 속성을 로드 할 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>파일 로드</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>추출된 ROM 디렉토리 열기</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>잘못된 디렉토리 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>파일 설치</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n개의 파일이 남음</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>파일 &quot;%1&quot; 설치 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>설치 결과</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n개의 파일이 새로 설치되었습니다.
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n개의 파일을 덮어썼습니다.
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n개의 파일을 설치하지 못했습니다.
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>시스템 애플리케이션</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>시스템 아카이브</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>시스템 애플리케이션 업데이트</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>펌웨어 패키지 (A타입)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>펌웨어 패키지 (B타입)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>게임</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>게임 업데이트</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>게임 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>델타 타이틀</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>NCA 설치 유형 선택...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>설치 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>NCA 타이틀 유형이 유효하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>파일을 찾을 수 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>파일 &quot;%1&quot;을 찾을 수 없습니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>하드웨어 요구 사항이 충족되지 않음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>시스템이 권장 하드웨어 요구 사항을 충족하지 않습니다. 호환성 보고가 비활성화되었습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>yuzu 계정 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>URL 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS 레코딩</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>플레이어 1의 파일을 덮어쓰시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>유효하지 않은 설정 감지</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>현재 amiibo가 제거되었습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>현재 게임은 amiibo를 찾고 있지 않습니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 파일 (%1);; 모든 파일 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Amiibo 로드</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Amiibo 데이터 로드 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>선택한 파일은 유효한 amiibo가 아닙니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>선택한 파일은 이미 사용 중입니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>알수없는 오류가 발생했습니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>컨트롤러 애플릿</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>스크린샷 캡처</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG 이미지 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 상태: %1/%2 실행 중</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS 상태: 레코딩 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 상태: 유휴 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS 상태: 유효하지 않음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>실행 중지(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>시작(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>레코딩 중지(&amp;e)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>레코드(&amp;R)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>빌드중: %n개 셰이더</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>스케일: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>속도: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>속도: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>게임: %1 FPS (제한없음)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>게임: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>프레임: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>AA 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>볼륨: 음소거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>볼륨: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>키 재생성 확인</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5836,37 +5836,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>fuses 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFO 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>파생 구성 요소 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5875,49 +5875,49 @@ on your system&apos;s performance.</source>
소요될 수 있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>파생 키</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>시스템 아카이브 암호 해독 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>암호화 키가 펌웨어를 해독하지 못했습니다. &lt;br&gt; 암호화 키와 펌웨어 및 게임을 얻기위해&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt; Yuzu 빠른 시작 가이드 &lt;/a&gt;를 따르세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS 덤프 대상 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>덤프할 RomFS를 선택하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>yuzu를 닫으시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6430,11 +6430,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>오디오 음소거/음소거 해제</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6457,117 +6458,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>메인 윈도우</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>오디오 볼륨 낮추기</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>오디오 볼륨 키우기</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>스크린샷 캡처</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>적응형 필터 변경</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>독 모드 변경</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>GPU 정확성 변경</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>재개/에뮬레이션 일시중지</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>전체화면 종료</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>yuzu 종료</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>전체화면</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>파일 로드</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Amiibo 로드/제거</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>에뮬레이션 재시작</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>에뮬레이션 중단</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS 기록</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS 리셋</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS 시작/멈춤</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>상태 표시줄 전환</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>프레임속도 제한 토글</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>마우스 패닝 활성화</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>상태 표시줄 전환</translation>
</message>
@@ -8133,7 +8133,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8141,78 +8141,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>사용자</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>프로필 생성기</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>프로필 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>프로필 아이콘 에디터</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>프로필 이름 에디터</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>누가 포인트를 받을까요?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>누가 Nintendo eShop을 사용하고 있습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>누가 이 구매를 하고 있습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>누가 게시하고 있습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Nintendo 계정에 연결할 사용자를 선택하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>어떤 사용자의 설정을 변경하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>어떤 사용자의 데이터를 포맷하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>어떤 사용자가 다른 본체로 이전되나요?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>어떤 사용자의 저장 데이터를 보내시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>사용자를 선택하세요:</translation>
</message>
diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts
index 86acbef2f..85b51abe4 100644
--- a/dist/languages/nb.ts
+++ b/dist/languages/nb.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Bakgrunnsfarge:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Av</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync Av</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Anbefalt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>På</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync På</translation>
</message>
@@ -4850,575 +4850,575 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re
<translation>Kjører et spill</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Laster web-applet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Slå av web-applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Deaktivering av webappleten kan føre til udefinert oppførsel og bør bare brukes med Super Mario 3D All-Stars. Er du sikker på at du vil deaktivere webappleten?
(Dette kan aktiveres på nytt i feilsøkingsinnstillingene).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Antall shader-e som bygges for øyeblikket</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Den valgte oppløsningsskaleringsfaktoren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Nåværende emuleringshastighet. Verdier høyere eller lavere en 100% indikerer at emuleringen kjører raskere eller tregere enn en Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Hvor mange bilder per sekund spiller viser. Dette vil variere fra spill til spill og scene til scene.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Slå på lyden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Lydløs</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Tilbakestill volum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Tøm Nylige Filer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Fortsett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Paus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Advarsel: Utdatert Spillformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Feil under innlasting av ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 har oppdaget en feil under kjøring av videokjernen. Dette er vanligvis forårsaket av utdaterte GPU-drivere, inkludert for integrert grafikk. Vennligst sjekk loggen for flere detaljer. For mer informasjon om å finne loggen, besøk følgende side: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Uploadd the Log File&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Feil under lasting av ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;Vennligst følg &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hurtigstartsguiden&lt;/a&gt; for å redumpe filene dine. &lt;br&gt;Du kan henvise til yuzu wikien&lt;/a&gt; eller yuzu Discorden&lt;/a&gt; for hjelp.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Lukker programvare...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Lagre Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Feil Under Åpning av %1 Mappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Mappen eksisterer ikke!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Feil ved åpning av overførbar shaderbuffer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Kunne ikke opprette shader cache-katalogen for denne tittelen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Feil ved fjerning av innhold</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Feil ved fjerning av oppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Feil ved fjerning av DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Fjern Innstallert Spillinnhold?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Fjern Installert Spilloppdatering?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Fjern Installert Spill DLC?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Fjern oppføring</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Fjerning lykkes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Vellykket fjerning av det installerte basisspillet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Fjernet vellykket den installerte oppdateringen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Fjernet vellykket %1 installerte DLC-er.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Slette OpenGL Overførbar Shaderbuffer?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Slette Vulkan Overførbar Shaderbuffer?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Slette Alle Overførbare Shaderbuffere?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Fjern Tilpasset Spillkonfigurasjon?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Fjerne Hurtiglagringen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Fjern Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>En shaderbuffer for denne tittelen eksisterer ikke.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Lykkes i å fjerne den overførbare shader cachen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Feil ved fjerning av Vulkan Driver-Rørledningsbuffer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Kunne ikke fjerne driverens rørledningsbuffer.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Feil ved fjerning av overførbare shaderbuffere</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Vellykket fjerning av overførbare shaderbuffere.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Feil ved fjerning av overførbar shaderbuffer katalog.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Feil Under Fjerning Av Tilpasset Konfigurasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Fjernet vellykket den tilpassede spillkonfigurasjonen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Utvinning av RomFS Feilet!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Fullstendig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Skjelett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Velg RomFS Dump Modus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Det er ikke nok ledig plass på %1 til å pakke ut RomFS. Vennligst frigjør plass eller velg en annen dump-katalog under Emulering &gt; Konfigurer &gt; System &gt; Filsystem &gt; Dump Root.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Utvinner RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Utpakking lyktes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Operasjonen fullført vellykket.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Integritetsverifisering kunne ikke utføres!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>Filinnholdet ble ikke kontrollert for gyldighet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Integritetsverifisering mislyktes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Filinnholdet kan være skadet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Verifiserer integritet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Integritetsverifisering vellykket!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Lag Snarvei</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Opprettet en snarvei til %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Dette vil opprette en snarvei til gjeldende AppImage. Dette fungerer kanskje ikke bra hvis du oppdaterer. Fortsette?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Lag Ikon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Kan ikke opprette ikonfil. Stien &quot;%1&quot; finnes ikke og kan ikke opprettes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Feil ved åpning av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Velg Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Last inn Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Åpne Utpakket ROM Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Ugyldig Mappe Valgt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Installer Filer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n fil gjenstår</numerusform><numerusform>%n filer gjenstår</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installerer fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Insallasjonsresultater</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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>For å unngå mulige konflikter fraråder vi brukere å installere basisspill på NAND.
Bruk kun denne funksjonen til å installere oppdateringer og DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n fil ble nylig installert
@@ -5426,7 +5426,7 @@ Bruk kun denne funksjonen til å installere oppdateringer og DLC.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n fil ble overskrevet
@@ -5434,7 +5434,7 @@ Bruk kun denne funksjonen til å installere oppdateringer og DLC.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n fil ble ikke installert
@@ -5442,194 +5442,194 @@ Bruk kun denne funksjonen til å installere oppdateringer og DLC.</translation>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systemapplikasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systemapplikasjonsoppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware Pakke (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-Pakke (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Spill</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Spilloppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Spill tilleggspakke</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Tittel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Velg NCA Installasjonstype...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Feil under Installasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Fil ikke funnet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Krav til maskinvare ikke oppfylt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Systemet ditt oppfyller ikke de anbefalte maskinvarekravene. Kompatibilitetsrapportering er deaktivert.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Mangler yuzu Bruker</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Feil under åpning av URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS-innspilling</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Overskriv filen til spiller 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Ugyldig konfigurasjon oppdaget</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Håndholdt kontroller kan ikke brukes i dokket modus. Pro-kontroller vil bli valgt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Den valgte amiibo-en har blitt fjernet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Feil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Det kjørende spillet sjekker ikke for amiibo-er</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Fil (%1);; Alle Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Last inn Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Feil ved lasting av Amiibo data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Den valgte filen er ikke en gyldig amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Den valgte filen er allerede i bruk</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>En ukjent feil oppso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5638,193 +5638,193 @@ Bruk kun denne funksjonen til å installere oppdateringer og DLC.</translation>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet for kontroller</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Ta Skjermbilde</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bilde (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS-tilstand: Kjører %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS-tilstand: Spiller inn %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS-tilstand: Venter %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS-tilstand: Ugyldig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Stopp kjøring</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Stopp innspilling (&amp;E)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>Spill inn (%E)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Bygger: %n shader</numerusform><numerusform>Bygger: %n shader-e</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighet: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Hastighet: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Spill: %1 FPS (ubegrenset)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Spill: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Ramme: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>INGEN AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUM: DEMPET</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUM: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Bekreft Nøkkel-Redirevasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5841,37 +5841,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Mangler fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Mangler BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Mangler BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- Mangler PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Derivasjonskomponenter Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Krypteringsnøkler mangler. &lt;br&gt;Vennligst følg &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzus oppstartsguide&lt;/a&gt; for å få alle nøklene, fastvaren og spillene dine.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5880,49 +5880,49 @@ Dette kan ta opp til et minutt avhengig
av systemytelsen din.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Deriverer Nøkler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Dekryptering av systemarkiv mislyktes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Krypteringsnøkler klarte ikke å dekryptere firmware. &lt;br&gt;Vennligst følg &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;quickstartguiden for yuzu &lt;/a&gt; for å få alle nøkler, firmware og spill.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Velg RomFS Dump-Mål</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6435,11 +6435,12 @@ Feilmelding:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Lyd av/på</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6462,117 +6463,116 @@ Feilmelding:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Hovedvindu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Lydvolum Ned</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Lydvolum Opp</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Ta Skjermbilde</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Endre tilpasningsfilter</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Endre forankret modus</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Endre GPU-nøyaktighet</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Fortsett/Pause Emuleringen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Avslutt fullskjerm</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Avslutt yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Fullskjerm</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Last inn Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Last/Fjern Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Omstart Emuleringen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Stopp Emuleringen</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Spill inn TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Tilbakestill TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Start/Stopp TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Veksle Filterlinje</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Veksle Bildefrekvensgrense</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Veksle Muspanorering</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Veksle Statuslinje</translation>
</message>
@@ -8138,7 +8138,7 @@ Prøv igjen eller kontakt utvikleren av programvaren.</translation>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8146,78 +8146,78 @@ Prøv igjen eller kontakt utvikleren av programvaren.</translation>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Brukere</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Profilskaper</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profilvelger</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Redigering av profilikon</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Redigering av kallenavn</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Hvem vil motta poengene?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Hvem bruker Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Hvem foretar dette kjøpet?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Hvem legger ut?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Velg en bruker for å koble til en Nintendo-konto.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Endre innstillinger for hvilken bruker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Formater data for hvilken bruker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Hvilken bruker vil bli overført til en annen konsoll?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Send lagrede data for hvilken bruker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Velg en bruker:</translation>
</message>
diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts
index adfae1636..f576b2abd 100644
--- a/dist/languages/nl.ts
+++ b/dist/languages/nl.ts
@@ -1885,7 +1885,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2302,33 +2302,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Achtergrondkleur:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Uit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync Uit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Aanbevolen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Aan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync Aan</translation>
</message>
@@ -4838,575 +4838,575 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa
<translation>Een spel uitvoeren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Web Applet Laden...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Schakel Webapplet uit</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Het uitschakelen van de webapplet kan leiden tot ongedefinieerd gedrag en mag alleen gebruikt worden met Super Mario 3D All-Stars. Weet je zeker dat je de webapplet wilt uitschakelen?
(Deze kan opnieuw worden ingeschakeld in de Debug-instellingen).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Het aantal shaders dat momenteel wordt gebouwd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>De huidige geselecteerde resolutieschaalmultiplier.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Huidige emulatiesnelheid. Waarden hoger of lager dan 100% geven aan dat de emulatie sneller of langzamer werkt dan een Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Hoeveel beelden per seconde het spel momenteel weergeeft. Dit varieert van spel tot spel en van scène tot scène.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Tijd die nodig is om een Switch-beeld te emuleren, beeldbeperking of v-sync niet meegerekend. Voor emulatie op volle snelheid mag dit maximaal 16,67 ms zijn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Dempen opheffen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Dempen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Herstel Volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Wis Recente Bestanden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Doorgaan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Onderbreken</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Waarschuwing Verouderd Spelformaat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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 het gedeconstrueerde ROM-mapformaat voor dit spel, wat een verouderd formaat is dat vervangen is door andere zoals NCA, NAX, XCI, of NSP. Deconstructed ROM-mappen missen iconen, metadata, en update-ondersteuning.&lt;br&gt;&lt;br&gt;Voor een uitleg van de verschillende Switch-formaten die yuzu ondersteunt,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt; bekijk onze wiki&lt;/a&gt;. Dit bericht wordt niet meer getoond.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Fout tijdens het laden van een ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Het ROM-formaat wordt niet ondersteund.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 is een fout tegengekomen tijdens het uitvoeren van de videokern. Dit wordt meestal veroorzaakt door verouderde GPU-drivers, inclusief geïntegreerde. Zie het logboek voor meer details. Voor meer informatie over toegang tot het log, zie de volgende pagina: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Hoe upload je het logbestand&lt;/a&gt;. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Fout tijdens het laden van ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;Volg de &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu snelstartgids&lt;/a&gt; om je bestanden te redumpen.&lt;br&gt;Je kunt de yuzu-wiki&lt;/a&gt;of de yuzu-Discord&lt;/a&gt; raadplegen voor hulp.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Software sluiten...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Save Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Fout tijdens het openen van %1 map</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Map bestaat niet!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Kon de shader-cache-map voor dit spel niet aanmaken.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Fout bij het verwijderen van de inhoud</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Fout bij het verwijderen van de update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Fout bij het verwijderen van DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Geïnstalleerde Spelinhoud Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Geïnstalleerde Spel-update Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Geïnstalleerde Spel-DLC Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Verwijder Invoer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Met Succes Verwijderd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Het geïnstalleerde basisspel is succesvol verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Het basisspel is niet geïnstalleerd in de NAND en kan niet worden verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>De geïnstalleerde update is succesvol verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Er is geen update geïnstalleerd voor dit spel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Er is geen DLC geïnstalleerd voor dit spel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 geïnstalleerde DLC met succes verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Overdraagbare OpenGL-shader-cache Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Overdraagbare Vulkan-shader-cache Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Alle Overdraagbare Shader-caches Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Aangepaste Spelconfiguratie Verwijderen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Verwijder Cache-opslag?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Verwijder Bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Fout bij het verwijderen van Overdraagbare Shader-cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Er bestaat geen shader-cache voor dit spel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>De overdraagbare shader-cache is verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Kon de overdraagbare shader-cache niet verwijderen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Fout bij het verwijderen van Pijplijn-cache van Vulkan-driver</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Kon de pijplijn-cache van de driver niet verwijderen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Fout bij het verwijderen van overdraagbare shader-caches</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>De overdraagbare shader-caches zijn verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Kon de overdraagbare shader-cache-map niet verwijderen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Fout bij het verwijderen van aangepaste configuratie</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Er bestaat geen aangepaste configuratie voor dit spel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>De aangepaste spelconfiguratie is verwijderd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Kon de aangepaste spelconfiguratie niet verwijderen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS-extractie Mislukt!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Er is een fout opgetreden bij het kopiëren van de RomFS-bestanden of de gebruiker heeft de bewerking geannuleerd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Volledig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Skelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Selecteer RomFS-dumpmodus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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 hoe je de RomFS gedumpt wilt hebben.&lt;br&gt;Volledig zal alle bestanden naar de nieuwe map kopiëren, terwijl &lt;br&gt;Skelet alleen de mapstructuur zal aanmaken.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Er is niet genoeg vrije ruimte op %1 om de RomFS uit te pakken. Maak ruimte vrij of kies een andere dumpmap bij Emulatie &gt; Configuratie &gt; Systeem &gt; Bestandssysteem &gt; Dump Root.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFS uitpakken...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Annuleren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS-extractie Geslaagd!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>De bewerking is succesvol voltooid.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Integriteitsverificatie kon niet worden uitgevoerd!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>De inhoud van bestanden werd niet gecontroleerd op geldigheid.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Integriteitsverificatie mislukt!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Bestandsinhoud kan corrupt zijn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Integriteit verifiëren...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Integriteitsverificatie geslaagd!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Maak Snelkoppeling</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Succesvol een snelkoppeling naar %1 gemaakt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Dit maakt een snelkoppeling naar de huidige AppImage. Dit werkt mogelijk niet goed als je een update uitvoert. Doorgaan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Maak Icoon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Kan geen icoonbestand maken. Pad &quot;%1&quot; bestaat niet en kan niet worden aangemaakt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Fout bij openen %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Selecteer Map</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Eigenschappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>De speleigenschappen kunnen niet geladen worden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Laad Bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Open Uitgepakte ROM-map</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Ongeldige Map Geselecteerd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Installeerbaar Switch-bestand (*.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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Installeer Bestanden</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n bestand(en) resterend</numerusform><numerusform>%n bestand(en) resterend</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Bestand &quot;%1&quot; Installeren...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Installeerresultaten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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>Om mogelijke conflicten te voorkomen, raden we gebruikers af om basisgames te installeren op de NAND.
Gebruik deze functie alleen om updates en DLC te installeren.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n bestand(en) zijn recent geïnstalleerd
@@ -5414,7 +5414,7 @@ Gebruik deze functie alleen om updates en DLC te installeren.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n bestand(en) werden overschreven
@@ -5422,7 +5422,7 @@ Gebruik deze functie alleen om updates en DLC te installeren.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n bestand(en) niet geïnstalleerd
@@ -5430,194 +5430,194 @@ Gebruik deze functie alleen om updates en DLC te installeren.</translation>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systeemapplicatie</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systeemarchief</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systeemapplicatie-update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Filmware-pakket (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Filmware-pakket (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Spel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Spelupdate</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Spel-DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Selecteer NCA-installatiesoort...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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 waarin je deze NCA wilt installeren:
(In de meeste gevallen is de standaard &quot;Spel&quot; prima).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Installatie Mislukt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Het soort title dat je hebt geselecteerd voor de NCA is ongeldig.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Bestand niet gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Er is niet voldaan aan de hardwarevereisten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Je systeem voldoet niet aan de aanbevolen hardwarevereisten. Compatibiliteitsrapportage is uitgeschakeld.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>yuzu-account Ontbreekt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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 een spelcompatibiliteitstest in te dienen, 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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Fout bij het openen van URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Kan de URL &quot;%1&quot; niet openen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS-opname</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Het bestand van speler 1 overschrijven?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Ongeldige configuratie gedetecteerd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Handheld-controller kan niet gebruikt worden in docked-modus. Pro controller wordt geselecteerd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>De huidige amiibo is verwijderd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Fout</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Het huidige spel is niet op zoek naar amiibo&apos;s</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-bestand (%1);; Alle Bestanden (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Laad Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Fout tijdens het laden van de Amiibo-gegevens</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Het geselecteerde bestand is geen geldige amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Het geselecteerde bestand is al in gebruik</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Er is een onbekende fout opgetreden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5626,193 +5626,193 @@ Gebruik deze functie alleen om updates en DLC te installeren.</translation>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Controller Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Leg Schermafbeelding Vast</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG-afbeelding (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS-status: %1/%2 In werking</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS-status: %1 Aan het opnemen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS-status: %1/%2 Inactief</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS-status: Ongeldig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Stop Uitvoering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Stop Opname</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>Opnemen</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Bouwen: %n shader(s)</numerusform><numerusform>Bouwen: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Schaal: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Snelheid: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Snelheid: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Spel: %1 FPS (Ontgrendeld)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Game: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>GEEN AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME: GEDEMPT</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUME: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Bevestig Sleutelherhaling</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5829,37 +5829,37 @@ en maak eventueel back-ups.
Dit zal je automatisch gegenereerde sleutelbestanden verwijderen en de sleutelafleidingsmodule opnieuw uitvoeren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Missing fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 Ontbreekt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main Ontbreekt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFO Ontbreekt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Afleidingscomponenten ontbreken</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Encryptiesleutels ontbreken. &lt;br&gt;Volg &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;de yuzu-snelstartgids&lt;/a&gt; om al je sleutels, firmware en spellen te krijgen.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5868,49 +5868,49 @@ Dit kan tot een minuut duren,
afhankelijk van de prestaties van je systeem.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Sleutels Afleiden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Decryptie van Systeemarchief Mislukt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Encryptiesleutels zijn mislukt om firmware te decoderen. &lt;br&gt;Volg &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;de yuzu-snelstartgids&lt;/a&gt; om al je sleutels, firmware en games te krijgen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Selecteer RomFS-dumpdoel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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 niet opgeslagen voortgang zal verloren gaan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6423,11 +6423,12 @@ Debug-bericht: </translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Audio Dempen/Dempen Opheffen</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6450,117 +6451,116 @@ Debug-bericht: </translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Hoofdvenster</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Audiovolume Omlaag</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Audiovolume Omhoog</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Leg Schermafbeelding Vast</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Wijzig Aanpassingsfilter</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Wijzig Docked-modus</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Wijzig GPU-nauwkeurigheid</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Emulatie Doorgaan/Onderbreken</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Volledig Scherm Afsluiten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>yuzu afsluiten</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Volledig Scherm</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Laad Bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Laad/Verwijder Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Herstart Emulatie</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Stop Emulatie</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS Opname</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS Reset</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS Start/Stop</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Schakel Filterbalk</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Schakel Frameratelimiet</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Schakel Muispanning</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Schakel Statusbalk</translation>
</message>
@@ -8126,7 +8126,7 @@ Probeer het opnieuw of neem contact op met de software-ontwikkelaar.</translatio
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8134,78 +8134,78 @@ Probeer het opnieuw of neem contact op met de software-ontwikkelaar.</translatio
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Gebruikers</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Profielmaker</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profielkiezer</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Profielicoon-editor</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Profielnaam-editor</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Wie krijgt de punten?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Wie gebruikt de Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Wie doet deze aankoop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Wie post er?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Selecteer een gebruiker om te koppelen aan een Nintendo-account.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Instellingen wijzigen voor welke gebruiker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Formatteer gegevens voor welke gebruiker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Welke gebruiker wordt overgezet naar een andere console?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Gegevens verzenden voor welke gebruiker?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Selecteer een gebruiker:</translation>
</message>
diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts
index eaa445940..baf046a12 100644
--- a/dist/languages/pl.ts
+++ b/dist/languages/pl.ts
@@ -390,7 +390,7 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP.</translation>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="33"/>
<source>Mute audio</source>
- <translation type="unfinished"/>
+ <translation>Wycisz dźwięk</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="34"/>
@@ -1892,7 +1892,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2309,33 +2309,33 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d
<translation>Kolor tła</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Wyłączone</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>VSync wyłączony</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Zalecane</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Włączone</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>VSync aktywny</translation>
</message>
@@ -4844,576 +4844,576 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Ładowanie apletu internetowego...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Wyłącz Aplet internetowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Wyłączanie web appletu może doprowadzić do nieokreślonych zachowań - wyłączyć applet należy jedynie grając w Super Mario 3D All-Stars. Na pewno chcesz wyłączyć web applet?
(Można go ponownie włączyć w ustawieniach debug.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Ilość budowanych shaderów</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Obecnie wybrany mnożnik rozdzielczości.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Aktualna prędkość emulacji. Wartości większe lub niższe niż 100% wskazują, że emulacja działa szybciej lub wolniej niż Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Ile klatek na sekundę gra aktualnie wyświetla. To będzie się różnić w zależności od gry, od sceny do sceny.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Usuń Ostatnie pliki</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Kontynuuj</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pauza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>OSTRZEŻENIE! Nieaktualny format gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Błąd podczas wczytywania ROMu!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Zamykanie aplikacji...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Zapis danych</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dane modów</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Błąd podczas otwarcia folderu %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Folder nie istnieje!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Błąd podczas usuwania zawartości</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Błąd podczas usuwania aktualizacji</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Błąd podczas usuwania dodatków</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Czy usunąć zainstalowaną zawartość gry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Czy usunąć zainstalowaną aktualizację gry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Czy usunąć zainstalowane dodatki gry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Usuń wpis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Pomyślnie usunięto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Pomyślnie usunięto zainstalowaną łatkę.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Usunąć Transferowalne Shadery OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Usunąć Transferowalne Shadery Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Usunąć Wszystkie Transferowalne Shadery?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Usunąć niestandardową konfigurację gry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Usunąć pamięć podręczną?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Usuń plik</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Błąd podczas usuwania pamięci podręcznej strumienia sterownika Vulkana</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Błąd podczas usuwania pamięci podręcznej strumienia sterownika.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Błąd podczas usuwania niestandardowej konfiguracji</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Wypakowanie RomFS nieudane!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Pełny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Szkielet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Wybierz tryb zrzutu RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Wypakowywanie RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Wypakowanie RomFS zakończone pomyślnie!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Operacja zakończona sukcesem.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Utwórz skrót</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Pomyślnie utworzono skrót do %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Utworzy to skrót do obecnego AppImage. Może nie działać dobrze po aktualizacji. Kontynuować?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Utwórz ikonę</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Nie można utworzyć pliku ikony. Ścieżka &quot;%1&quot; nie istnieje oraz nie może być utworzona.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Błąd podczas otwierania %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Wybierz folder...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Właściwości</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Załaduj plik...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Otwórz folder wypakowanego ROMu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Wybrano niewłaściwy folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Zainstaluj pliki</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalowanie pliku &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Wynik instalacji</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>1 nowy plik został zainstalowany
@@ -5423,399 +5423,399 @@ 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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplikacja systemowa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Archiwum systemu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Aktualizacja aplikacji systemowej</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Paczka systemowa (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Paczka systemowa (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Gra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Aktualizacja gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Dodatek do gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Tytuł Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Wybierz typ instalacji NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Instalacja nieudana</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Nie znaleziono pliku</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Wymagania sprzętowe nie są spełnione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Twój system nie spełnia rekomendowanych wymagań sprzętowych. Raportowanie kompatybilności zostało wyłączone.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Brakuje konta Yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Błąd otwierania adresu URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Nagrywanie TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Nadpisać plik gracza 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Wykryto nieprawidłową konfigurację</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Amiibo zostało &quot;zdjęte&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Ta gra nie szuka amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Plik Amiibo (%1);;Wszyskie pliki (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Załaduj Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Błąd podczas ładowania pliku danych Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Wybrany plik nie jest poprawnym amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Wybrany plik jest już w użyciu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Wystąpił nieznany błąd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Aplet kontrolera</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Zrób zrzut ekranu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Obrazek PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Status TAS: Działa %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Status TAS: Nagrywa %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Status TAS: Bezczynny %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Status TAS: Niepoprawny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Wyłącz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Przestań N&amp;agrywać</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>N&amp;agraj</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<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="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Prędkość: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Prędkość: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Gra: %1 FPS (Odblokowane)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Gra: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Klatka: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>BEZ AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>Głośność: Wyciszony</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>Głośność: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Potwierdź ponowną aktywacje klucza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5832,37 +5832,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Brakujące bezpieczniki</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Brak BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Brak BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Brak PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Brak komponentów wyprowadzania</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5871,49 +5871,49 @@ Zależnie od tego może potrwać do minuty
na wydajność twojego systemu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Wyprowadzanie kluczy...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Wybierz cel zrzutu RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6426,11 +6426,12 @@ Komunikat debugowania:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Wycisz/Odcisz Audio</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6453,117 +6454,116 @@ Komunikat debugowania:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Okno główne</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Zmniejsz głośność dźwięku</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Zwiększ głośność dźwięku</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Zrób zrzut ekranu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Zmień filtr adaptacyjny</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Zmień tryb dokowania</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Zmień dokładność GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Kontynuuj/Zatrzymaj Emulację</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Wyłącz Pełny Ekran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Wyjdź z yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Pełny ekran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Załaduj plik...</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Załaduj/Usuń Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Zrestartuj Emulację</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Zatrzymaj Emulację</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Nagrywanie TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Reset TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS Start/Stop</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Pokaż pasek filtrowania</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Przełącz limit liczby klatek na sekundę</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Włącz przesuwanie myszką</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Przełącz pasek stanu</translation>
</message>
@@ -8129,7 +8129,7 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania.</translation>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8137,78 +8137,78 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania.</translation>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Użytkownicy</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Kreator profilu</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Wybór profilu</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Edytor ikony profilu</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Edytor ksywki profilowej</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Wybierz użytkownika:</translation>
</message>
diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts
index 97a449303..bb7f7a1ed 100644
--- a/dist/languages/pt_BR.ts
+++ b/dist/languages/pt_BR.ts
@@ -410,7 +410,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="41"/>
<source>Memory Layout</source>
- <translation type="unfinished"/>
+ <translation>Layout de memória</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="43"/>
@@ -425,7 +425,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Backend:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -435,7 +435,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="55"/>
<source>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao reduzir a precisão de instruções de fused-multiply-add em CPUs sem suporte nativo ao FMA.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="58"/>
@@ -445,7 +445,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="59"/>
<source>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade de algumas funções aproximadas de pontos flutuantes ao usar aproximações nativas precisas.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="62"/>
@@ -455,7 +455,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="63"/>
<source>This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade de funções de pontos flutuantes de 32 bits ASIMD ao executá-las com modos de arredondamento incorretos.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="65"/>
@@ -465,7 +465,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="66"/>
<source>This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao remover a checagem de NaN. Por favor note que isso também reduz a precisão de certas instruções de pontos flutuantes.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="68"/>
@@ -475,7 +475,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="69"/>
<source>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&apos;s memory.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao eliminar uma checagem de segurança antes de cada leitura/gravação de memória no modo convidado. Desabilitar isso pode permitir que um jogo leia/grave na memória no emulador.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="73"/>
@@ -485,7 +485,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="74"/>
<source>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.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao depender somente da semântica do cmpxchg para garantir a segurança das instruções de acesso exclusivas. Por favor note que isso pode resultar em travamentos e outras condições raras.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="79"/>
@@ -550,12 +550,12 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="92"/>
<source>ASTC Decoding Method:</source>
- <translation type="unfinished"/>
+ <translation>Método de Decodificação ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="93"/>
<source>ASTC Recompression Method:</source>
- <translation type="unfinished"/>
+ <translation>Método de Recompressão ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="95"/>
@@ -568,7 +568,10 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down.
Mailbox can have lower latency than FIFO and does not tear but may drop frames.
Immediate (no synchronization) just presents whatever is available and can exhibit tearing.</source>
- <translation type="unfinished"/>
+ <translation>FIFO (VSync) não reduz frames ou exibe tearing mas está limitado pela taxa de atualização da tela.
+FIFO Relaxado é similar ao FIFO mas permite o tearing quando se recupera de um slow down.
+Caixa de entrada pode ter a latência mais baixa do que o FIFO e não causa tearing mas pode reduzir os frames.
+Imediato (sem sincronização) simplesmente apresenta o que estiver disponível e pode exibir tearing.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="106"/>
@@ -628,44 +631,46 @@ Immediate (no synchronization) just presents whatever is available and can exhib
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="126"/>
<source>Enable Compute Pipelines (Intel Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Pipeline de Computação (Somente Intel Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="127"/>
<source>Enable compute pipelines, required by some games.
This setting only exists for Intel proprietary drivers, and may crash if enabled.
Compute pipelines are always enabled on all other drivers.</source>
- <translation type="unfinished"/>
+ <translation>Habilita pipelines de computação, obrigatórias para alguns jogos.
+Essa configuração só existe para drivers proprietários Intel, e pode travar se estiver habilitado.
+Pipelines de computação estão sempre habilitadas em todos os outros drivers.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="131"/>
<source>Enable Reactive Flushing</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Flushing Reativo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="132"/>
<source>Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing.</source>
- <translation type="unfinished"/>
+ <translation>Usa flushing reativo ao invés de flushing preditivo, permitindo mais precisão na sincronização da memória.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="134"/>
<source>Sync to framerate of video playback</source>
- <translation type="unfinished"/>
+ <translation>Sincronizar com o framerate da reprodução de vídeo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="135"/>
<source>Run the game at normal speed during video playback, even when the framerate is unlocked.</source>
- <translation type="unfinished"/>
+ <translation>Executa o jogo na velocidade normal durante a reprodução de vídeo, mesmo se o framerate estiver desbloqueado.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="137"/>
<source>Barrier feedback loops</source>
- <translation type="unfinished"/>
+ <translation>Ciclos de feedback de barreira</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="138"/>
<source>Improves rendering of transparency effects in specific games.</source>
- <translation type="unfinished"/>
+ <translation>Melhora a renderização de efeitos de transparência em jogos específicos.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="143"/>
@@ -685,7 +690,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="148"/>
<source>Language:</source>
- <translation type="unfinished"/>
+ <translation>Idioma:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="149"/>
@@ -710,7 +715,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="153"/>
<source>Console Mode:</source>
- <translation type="unfinished"/>
+ <translation>Modo Console:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="171"/>
@@ -725,7 +730,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="174"/>
<source>Confirm before stopping emulation</source>
- <translation type="unfinished"/>
+ <translation>Confirmar antes de parar a emulação</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="176"/>
@@ -735,12 +740,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="177"/>
<source>Disable controller applet</source>
- <translation type="unfinished"/>
+ <translation>Desabilitar miniaplicativo de controle</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="181"/>
<source>Enable Gamemode</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Gamemode</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="207"/>
@@ -755,7 +760,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="209"/>
<source>CPU Asynchronous</source>
- <translation type="unfinished"/>
+ <translation>CPU Assíncrona</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="214"/>
@@ -840,12 +845,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="249"/>
<source>Dynarmic</source>
- <translation type="unfinished"/>
+ <translation>Dynarmic</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -875,7 +880,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="266"/>
<source>0.5X (360p/540p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.5X (360p/540p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="267"/>
@@ -1398,17 +1403,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="405"/>
<source>4GB DRAM (Default)</source>
- <translation type="unfinished"/>
+ <translation>4GB DRAM (Padrão)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="406"/>
<source>6GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>6GB DRAM (Não seguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="407"/>
<source>8GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>8GB DRAM (Não seguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="411"/>
@@ -1423,17 +1428,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="417"/>
<source>Always ask (Default)</source>
- <translation type="unfinished"/>
+ <translation>Sempre perguntar (Padrão)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="418"/>
<source>Only if game specifies not to stop</source>
- <translation type="unfinished"/>
+ <translation>Somente se o jogo especificar para não parar</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="419"/>
<source>Never ask</source>
- <translation type="unfinished"/>
+ <translation>Nunca perguntar</translation>
</message>
</context>
<context>
@@ -1518,7 +1523,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>Backend da CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1894,13 +1899,13 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Quando selecionado, desabilita a reordenação de uploads de memória mapeada, o que permite associar uploads com chamados específicos. Pode reduzir a performance em alguns casos.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
<source>Disable Buffer Reorder</source>
- <translation type="unfinished"/>
+ <translation>Desabilitar a Reordenação de Buffer</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="397"/>
@@ -2265,7 +2270,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="52"/>
<source>Linux</source>
- <translation type="unfinished"/>
+ <translation>Linux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="109"/>
@@ -2311,33 +2316,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Cor de fundo:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Desligado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Sincronização vertical desligada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Recomendado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Ligado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Sincronização vertical ligada</translation>
</message>
@@ -4847,575 +4852,575 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe
<translation>Rodando um jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Carregando applet web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Desativar o applet da web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>A desativação do applet da web pode causar comportamento inesperado e deve apenas ser usada com Super Mario 3D All-Stars. Você deseja mesmo desativar o applet da web?
(Ele pode ser reativado nas configurações de depuração.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>A quantidade de shaders sendo construídos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>O atualmente multiplicador de escala de resolução selecionado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Velocidade atual de emulação. Valores maiores ou menores que 100% indicam que a emulação está rodando mais rápida ou lentamente que em um Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Quantos quadros por segundo o jogo está exibindo atualmente. Isto irá variar de jogo para jogo e cena para cena.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Unmute</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Mudo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Redefinir volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Limpar arquivos recentes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Aviso - formato de jogo desatualizado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Erro ao carregar a ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Encerrando software...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Dados de jogos salvos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dados de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Erro ao abrir a pasta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>A pasta não existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Erro ao Remover Conteúdos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Erro ao Remover Atualização</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Erro ao Remover DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Remover Conteúdo Instalado do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Remover Atualização Instalada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Remover DLC Instalada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Remover item</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Removido com sucesso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Remover configurações customizadas do jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Remover Armazenamento da Cache?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Remover arquivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Remover dados de tempo jogado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Deseja mesmo resetar o tempo jogado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Erro ao Remover Cache de Pipeline do Driver Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Falha ao remover o pipeline de cache do driver.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<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="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Falha ao extrair RomFS!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Extração completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Apenas estrutura</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<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="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extraindo RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extração do RomFS concluida!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<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="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>A verificação de integridade não foi realizada.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>O conteúdo do arquivo não foi analisado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Houve uma falha na verificação de integridade!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>O conteúdo do arquivo pode estar corrompido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Verificando integridade…</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Verificação de integridade concluída!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Criar Atalho</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
- <translation type="unfinished"/>
+ <translation>Gostaria de iniciar o jogo em tela cheia?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Atalho criado em %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Isso irá criar um atalho para o AppImage atual. Isso pode não funcionar corretamente se você fizer uma atualização. Continuar?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
- <translation type="unfinished"/>
+ <translation>Falha ao criar atalho em %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Criar Ícone</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Não foi possível criar o arquivo de ícone. O caminho &quot;%1&quot; não existe e não pode ser criado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Erro ao abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Selecionar pasta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Propriedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Carregar arquivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Abrir pasta da ROM extraída</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Pasta inválida selecionada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Instalar arquivos</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n arquivo restante</numerusform><numerusform>%n arquivo(s) restante(s)</numerusform><numerusform>%n arquivo(s) restante(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando arquivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Resultados da instalação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n arquivo(s) instalado(s)
@@ -5424,7 +5429,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n arquivo(s) sobrescrito(s)
@@ -5433,7 +5438,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n arquivo(s) não instalado(s)
@@ -5442,194 +5447,194 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs.</transla
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Atualização de aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Pacote de firmware (tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Pacote de firmware (tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Atualização de jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC de jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Título delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Falha ao instalar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Arquivo não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Requisitos de hardware não atendidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Seu sistema não atende os requisitos de harwdare. O relatório de compatibilidade foi desabilitado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Conta do yuzu faltando</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Erro ao abrir URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Gravando TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Sobrescrever arquivo do jogador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Configuração inválida detectada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>O amiibo atual foi removido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<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="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arquivo Amiibo (%1);; Todos os arquivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Erro ao carregar dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>O arquivo selecionado não é um amiibo válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>O arquivo selecionado já está em uso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ocorreu um erro desconhecido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5638,193 +5643,193 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs.</transla
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Nenhum firmware disponível</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Instale o firmware para usar o applet Álbum.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Applet Álbum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>O applet Álbum não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Instale o firmware para usar o applet Armário.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Applet Armário</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>O applet Armário não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Instale o firmware para usar o applet Editor de Miis.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Applet Editor de Miis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>O applet Editor de Miis não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
- <translation type="unfinished"/>
+ <translation>Por favor instale o firmware para usar o Menu de Controles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
- <translation type="unfinished"/>
+ <translation>Menu de Controles não está disponível. Por favor reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Capturar tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Imagem PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Situação TAS: Rodando %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Situação TAS: Gravando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Situação TAS: Repouso %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Situação TAS: Inválido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar de rodar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Parar G&amp;ravação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;ravação</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Compilando: %n shader(s)</numerusform><numerusform>Compilando: %n shader(s)</numerusform><numerusform>Compilando: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidade: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Velocidade: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Jogo: %1 FPS (Desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Jogo: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Quadro: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>Sem AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME: MUDO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUME: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmar rederivação de chave</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5841,37 +5846,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Faltando fusíveis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Faltando BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Faltando BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Faltando PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Faltando componentes de derivação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5880,49 +5885,49 @@ Isto pode demorar até um minuto, dependendo
do desempenho do seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Derivando chaves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Falha a desencriptar o arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Chaves de encriptação falharam a desencriptar o firmware. &lt;br&gt;Por favor segue &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; para obter todas as tuas chaves, firmware e jogos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Selecionar alvo de extração do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6435,11 +6440,12 @@ Mensagem de depuração:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Mutar/Desmutar Áudio</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6462,117 +6468,116 @@ Mensagem de depuração:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Janela principal</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Aumentar volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Abaixar volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Capturar tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Alterar filtro de adaptação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Alterar Modo de Ancoragem</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Alterar precisão da GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Continuar/Pausar emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Sair da tela inteira</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Sair do yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Tela inteira</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Carregar arquivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Carregar/Remover Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Reiniciar emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Parar emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Gravar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Reiniciar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Iniciar/Parar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Alternar Barra de Filtro</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Alternar Limite de Quadros por Segundo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Alternar o Giro do Mouse</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
- <translation type="unfinished"/>
+ <translation>Alternar a Captura do Renderdoc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Alternar Barra de Status</translation>
</message>
@@ -7027,7 +7032,7 @@ Mensagem de depuração:</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="460"/>
<source>Open &amp;Controller Menu</source>
- <translation type="unfinished"/>
+ <translation>Menu Abrir &amp;Controles</translation>
</message>
</context>
<context>
@@ -8138,7 +8143,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software.</translatio
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8146,78 +8151,78 @@ Tente novamente ou entre em contato com o desenvolvedor do software.</translatio
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Usuários</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Criador de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Seletor de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Editor de ícone de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Editor do apelido de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Quem receberá os pontos?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Quem está usando o Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Quem está fazendo essa compra?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Quem está postando?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Selecione um usuário para vincular a uma conta Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Mudar configurações para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Formatar dados para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Qual usuário será transferido para outro console?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Enviar dados salvos para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Selecione um usuário:</translation>
</message>
diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts
index 0b5492519..71df4f2dd 100644
--- a/dist/languages/pt_PT.ts
+++ b/dist/languages/pt_PT.ts
@@ -410,7 +410,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="41"/>
<source>Memory Layout</source>
- <translation type="unfinished"/>
+ <translation>Layout de memória</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="43"/>
@@ -425,7 +425,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="47"/>
<source>Backend:</source>
- <translation type="unfinished"/>
+ <translation>Backend:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="54"/>
@@ -435,7 +435,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="55"/>
<source>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao reduzir a precisão de instruções de fused-multiply-add em CPUs sem suporte nativo ao FMA.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="58"/>
@@ -445,7 +445,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="59"/>
<source>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade de algumas funções aproximadas de pontos flutuantes ao usar aproximações nativas precisas.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="62"/>
@@ -455,7 +455,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="63"/>
<source>This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade de funções de pontos flutuantes de 32 bits ASIMD ao executá-las com modos de arredondamento incorretos.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="65"/>
@@ -465,7 +465,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="66"/>
<source>This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao remover a checagem de NaN. Por favor note que isso também reduz a precisão de certas instruções de pontos flutuantes.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="68"/>
@@ -475,7 +475,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="69"/>
<source>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&apos;s memory.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao eliminar uma checagem de segurança antes de cada leitura/gravação de memória no modo convidado. Desabilitar isso pode permitir que um jogo leia/grave na memória no emulador.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="73"/>
@@ -485,7 +485,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="74"/>
<source>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.</source>
- <translation type="unfinished"/>
+ <translation>Essa opção melhora a velocidade ao depender somente da semântica do cmpxchg para garantir a segurança das instruções de acesso exclusivas. Por favor note que isso pode resultar em travamentos ou outras condições raras.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="79"/>
@@ -550,12 +550,12 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="92"/>
<source>ASTC Decoding Method:</source>
- <translation type="unfinished"/>
+ <translation>Método de Decodificação ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="93"/>
<source>ASTC Recompression Method:</source>
- <translation type="unfinished"/>
+ <translation>Método de Recompressão ASTC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="95"/>
@@ -568,7 +568,10 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.</translatio
FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down.
Mailbox can have lower latency than FIFO and does not tear but may drop frames.
Immediate (no synchronization) just presents whatever is available and can exhibit tearing.</source>
- <translation type="unfinished"/>
+ <translation>FIFO (VSync) não reduz frames ou exibe tearing mas está limitado pela taxa de atualização da tela.
+FIFO Relaxado é similar ao FIFO mas permite o tearing quando se recupera de um slow down.
+Caixa de entrada pode ter a latência mais baixa do que o FIFO e não causa tearing mas pode reduzir os frames.
+Imediato (sem sincronização) simplesmente apresenta o que estiver disponível e pode exibir tearing.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="106"/>
@@ -628,44 +631,46 @@ Immediate (no synchronization) just presents whatever is available and can exhib
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="126"/>
<source>Enable Compute Pipelines (Intel Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Pipeline de Computação (Somente Intel Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="127"/>
<source>Enable compute pipelines, required by some games.
This setting only exists for Intel proprietary drivers, and may crash if enabled.
Compute pipelines are always enabled on all other drivers.</source>
- <translation type="unfinished"/>
+ <translation>Habilita pipelines de computação, obrigatórias para alguns jogos.
+Essa configuração só existe para drivers proprietários Intel, e pode travar se estiver habilitado.
+Pipelines de computação estão sempre habilitadas em todos os outros drivers.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="131"/>
<source>Enable Reactive Flushing</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Flushing Reativo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="132"/>
<source>Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing.</source>
- <translation type="unfinished"/>
+ <translation>Usa flushing reativo ao invés de flushing preditivo, permitindo mais precisão na sincronização da memória.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="134"/>
<source>Sync to framerate of video playback</source>
- <translation type="unfinished"/>
+ <translation>Sincronizar com o framerate da reprodução de vídeo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="135"/>
<source>Run the game at normal speed during video playback, even when the framerate is unlocked.</source>
- <translation type="unfinished"/>
+ <translation>Executa o jogo na velocidade normal durante a reprodução de vídeo, mesmo se o framerate estiver desbloqueado.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="137"/>
<source>Barrier feedback loops</source>
- <translation type="unfinished"/>
+ <translation>Ciclos de feedback de barreira</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="138"/>
<source>Improves rendering of transparency effects in specific games.</source>
- <translation type="unfinished"/>
+ <translation>Melhora a renderização de efeitos de transparência em jogos específicos.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="143"/>
@@ -685,7 +690,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="148"/>
<source>Language:</source>
- <translation type="unfinished"/>
+ <translation>Idioma:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="149"/>
@@ -710,7 +715,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="153"/>
<source>Console Mode:</source>
- <translation type="unfinished"/>
+ <translation>Modo Console:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="171"/>
@@ -725,7 +730,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="174"/>
<source>Confirm before stopping emulation</source>
- <translation type="unfinished"/>
+ <translation>Confirmar antes de parar a emulação</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="176"/>
@@ -735,12 +740,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="177"/>
<source>Disable controller applet</source>
- <translation type="unfinished"/>
+ <translation>Desabilitar miniaplicativo de controle</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="181"/>
<source>Enable Gamemode</source>
- <translation type="unfinished"/>
+ <translation>Habilitar Gamemode</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="207"/>
@@ -755,7 +760,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="209"/>
<source>CPU Asynchronous</source>
- <translation type="unfinished"/>
+ <translation>CPU Assíncrona</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="214"/>
@@ -840,12 +845,12 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="249"/>
<source>Dynarmic</source>
- <translation type="unfinished"/>
+ <translation>Dynarmic</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="250"/>
<source>NCE</source>
- <translation type="unfinished"/>
+ <translation>NCE</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="254"/>
@@ -875,7 +880,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="266"/>
<source>0.5X (360p/540p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.5X (360p/540p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="267"/>
@@ -1398,17 +1403,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="405"/>
<source>4GB DRAM (Default)</source>
- <translation type="unfinished"/>
+ <translation>4GB DRAM (Padrão)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="406"/>
<source>6GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>6GB DRAM (Não seguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="407"/>
<source>8GB DRAM (Unsafe)</source>
- <translation type="unfinished"/>
+ <translation>8GB DRAM (Não seguro)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="411"/>
@@ -1423,17 +1428,17 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="417"/>
<source>Always ask (Default)</source>
- <translation type="unfinished"/>
+ <translation>Sempre perguntar (Padrão)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="418"/>
<source>Only if game specifies not to stop</source>
- <translation type="unfinished"/>
+ <translation>Somente se o jogo especificar para não parar</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/shared_translation.cpp" line="419"/>
<source>Never ask</source>
- <translation type="unfinished"/>
+ <translation>Nunca perguntar</translation>
</message>
</context>
<context>
@@ -1518,7 +1523,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="65"/>
<source>CPU Backend</source>
- <translation type="unfinished"/>
+ <translation>Backend da CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="95"/>
@@ -1886,13 +1891,13 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Quando selecionado, desabilita a reordenação de uploads de memória mapeada, o que permite associar uploads com chamados específicos. Pode reduzir a performance em alguns casos.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
<source>Disable Buffer Reorder</source>
- <translation type="unfinished"/>
+ <translation>Desabilitar a Reordenação de Buffer</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="397"/>
@@ -2257,7 +2262,7 @@ Compute pipelines are always enabled on all other drivers.</source>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="52"/>
<source>Linux</source>
- <translation type="unfinished"/>
+ <translation>Linux</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="109"/>
@@ -2303,33 +2308,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Cor de fundo:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Desligado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Sincronização vertical desligada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Recomendado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Ligado</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Sincronização vertical ligada</translation>
</message>
@@ -4839,780 +4844,780 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<translation>Rodando um jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>A Carregar o Web Applet ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Desativar Web Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>A desativação do applet da web pode causar comportamento inesperado e deve apenas ser usada com Super Mario 3D All-Stars. Você deseja mesmo desativar o applet da web?
(Ele pode ser reativado nas configurações de depuração.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Quantidade de shaders a serem construídos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>O atualmente multiplicador de escala de resolução selecionado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Velocidade da emulação actual. Valores acima ou abaixo de 100% indicam que a emulação está sendo executada mais depressa ou mais devagar do que a Switch</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Quantos quadros por segundo o jogo está exibindo de momento. Isto irá variar de jogo para jogo e de cena para cena.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Unmute</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Mute</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Redefinir volume</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Limpar arquivos recentes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Aviso de Formato de Jogo Desactualizado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Erro ao carregar o ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Encerrando software...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Save Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Erro ao abrir a pasta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>A Pasta não existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Erro Removendo Conteúdos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Erro ao Remover Atualização</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Erro Removendo DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Remover Conteúdo Instalado do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Remover Atualização Instalada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Remover DLC Instalada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Remover Entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Removido com Sucesso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Removido DLC instalado %1 com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Remover Configuração Personalizada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Remover Armazenamento da Cache?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Remover Ficheiro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>Remover dados de tempo jogado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>Deseja mesmo resetar o tempo jogado?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Erro ao Remover Cache de Pipeline do Driver Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Falha ao remover o pipeline de cache do driver.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Erro ao Remover Configuração Personalizada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>A Extração de RomFS falhou!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Cheio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Esqueleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Selecione o modo de despejo do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extraindo o RomFS ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extração de RomFS Bem-Sucedida!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>A operação foi completa com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>A verificação de integridade não foi realizada.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>O conteúdo do arquivo não foi analisado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Houve uma falha na verificação de integridade!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>O conteúdo do arquivo pode estar corrompido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Verificando integridade…</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Verificação de integridade concluída!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Criar Atalho</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
- <translation type="unfinished"/>
+ <translation>Gostaria de iniciar o jogo em tela cheia?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Atalho criado com sucesso em %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Isso irá criar um atalho para o AppImage atual. Isso pode não funcionar corretamente se você fizer uma atualização. Continuar?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
- <translation type="unfinished"/>
+ <translation>Falha ao criar atalho para %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Criar Ícone</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Não foi possível criar o arquivo de ícone. O caminho &quot;%1&quot; não existe e não pode ser criado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Erro ao abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Selecione o Diretório</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Propriedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Carregar Ficheiro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Abrir o directório ROM extraído</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Diretório inválido selecionado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Instalar Ficheiros</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n arquivo restante</numerusform><numerusform>%n ficheiro(s) remanescente(s)</numerusform><numerusform>%n ficheiro(s) remanescente(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando arquivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Instalar Resultados</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Aplicação do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Atualização do aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Pacote de Firmware (Tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Pacote de Firmware (Tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Actualização do Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC do Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Título Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Falha na instalação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Arquivo não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Requisitos de hardware não atendidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Seu sistema não atende os requisitos de harwdare. O relatório de compatibilidade foi desabilitado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Conta Yuzu Ausente</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Erro ao abrir URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Gravando TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Sobrescrever arquivo do jogador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Configação inválida detectada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>O amiibo atual foi removido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Erro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<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="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arquivo Amiibo (%1);; Todos os Arquivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Erro ao carregar dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>O arquivo selecionado não é um amiibo válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>O arquivo selecionado já está em uso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ocorreu um erro desconhecido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5621,193 +5626,193 @@ Por favor, use esse recurso apenas para instalar atualizações e DLC.</translat
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>Nenhum firmware disponível</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>Instale o firmware para usar o applet Album.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>Applet Álbum</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>O applet Álbum não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>Instale o firmware para usar o applet Armário.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Applet Armário</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>O applet Armário não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>Instale o firmware para usar o applet Editor de Miis.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Applet Editor de Miis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>O applet Editor de Miis não está disponível. Reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
- <translation type="unfinished"/>
+ <translation>Por favor instale o firmware para usar o Menu de Controles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
- <translation type="unfinished"/>
+ <translation>Menu de Controles não está disponível. Por favor reinstale o firmware.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Captura de Tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Imagem PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Situação TAS: Rodando %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Situação TAS: Gravando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Situação TAS: Repouso %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Situação TAS: Inválido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar de rodar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Começar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Parar G&amp;ravação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;ravação</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidade: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Velocidade: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Jogo: %1 FPS (Desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Jogo: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Quadro: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>Sem AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>VOLUME: MUDO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>VOLUME: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Confirme a rederivação da chave</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5824,37 +5829,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Fusíveis em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Componentes de Derivação em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5863,49 +5868,49 @@ Isto pode demorar até um minuto, dependendo
do desempenho do seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Derivando Chaves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Falha a desencriptar o arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Chaves de encriptação falharam a desencriptar o firmware. &lt;br&gt;Por favor segue &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; para obter todas as tuas chaves, firmware e jogos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Selecione o destino de despejo do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6418,11 +6423,12 @@ Mensagem de depuração:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Mutar/Desmutar Áudio</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6445,117 +6451,116 @@ Mensagem de depuração:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Janela Principal</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Volume Menos</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Volume Mais</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Captura de Tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Alterar Filtro de Adaptação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Alterar Modo de Ancoragem</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Alterar Precisão da GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Continuar/Pausar Emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Sair da Tela Cheia</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Sair do yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Tela Cheia</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Carregar Ficheiro</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Carregar/Remover Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Reiniciar Emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Parar Emulação</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Gravar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Reiniciar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Iniciar/Parar TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Alternar Barra de Filtro</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Alternar Limite de Quadros por Segundo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Alternar o Giro do Mouse</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
- <translation type="unfinished"/>
+ <translation>Alternar a Captura do Renderdoc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Alternar Barra de Status</translation>
</message>
@@ -7010,7 +7015,7 @@ Mensagem de depuração:</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="460"/>
<source>Open &amp;Controller Menu</source>
- <translation type="unfinished"/>
+ <translation>Menu Abrir &amp;Controles</translation>
</message>
</context>
<context>
@@ -8120,7 +8125,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software.</translatio
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8128,78 +8133,78 @@ Tente novamente ou entre em contato com o desenvolvedor do software.</translatio
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Utilizadores</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Criador de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Seleccionador de Perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Editor de ícone de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Editor do apelido de perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Quem receberá os pontos?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Quem está usando o Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Quem está fazendo essa compra?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Quem está postando?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Selecione um usuário para vincular a uma conta Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Mudar configurações para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Formatar dados para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Qual usuário será transferido para outro console?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Enviar dados salvos para qual usuário?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Selecione um usuário:</translation>
</message>
diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts
index b5d102a31..f4cf02226 100644
--- a/dist/languages/ru_RU.ts
+++ b/dist/languages/ru_RU.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Фоновый цвет:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Отключена</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Верт. синхронизация отключена</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Рекомендуется</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Включена</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Верт. синхронизация включена</translation>
</message>
@@ -4850,575 +4850,575 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Запущена игра</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Загрузка веб-апплета...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Отключить веб-апплет</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Отключение веб-апплета может привести к неожиданному поведению и должно использоваться только с Super Mario 3D All-Stars. Вы уверены, что хотите отключить веб-апплет?
(Его можно снова включить в настройках отладки.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Количество создаваемых шейдеров на данный момент</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Текущий выбранный множитель масштабирования разрешения.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Текущая скорость эмуляции. Значения выше или ниже 100% указывают на то, что эмуляция идет быстрее или медленнее, чем на Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Количество кадров в секунду в данный момент. Значение будет меняться между играми и сценами.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Время, которое нужно для эмуляции 1 кадра Switch, не принимая во внимание ограничение FPS или вертикальную синхронизацию. Для эмуляции в полной скорости значение должно быть не больше 16,67 мс.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Включить звук</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Выключить звук</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Сбросить громкость</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>[&amp;C] Очистить недавние файлы</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>[&amp;C] Продолжить</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>[&amp;P] Пауза</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Предупреждение устаревший формат игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Ошибка при загрузке ROM&apos;а!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Формат ROM&apos;а не поддерживается.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>Произошла ошибка при инициализации видеоядра.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 столкнулся с ошибкой при запуске видеоядра. Обычно это вызвано устаревшими драйверами ГП, включая интегрированные. Проверьте журнал для получения более подробной информации. Дополнительную информацию о доступе к журналу смотрите на следующей странице: &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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Произошла неизвестная ошибка. Пожалуйста, проверьте журнал для подробностей.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-х битный)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-х битный)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Закрываем программу...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Сохранения</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Данные модов</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Ошибка при открытии папки %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Папка не существует!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Ошибка при открытии переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Не удалось создать папку кэша шейдеров для этой игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Ошибка при удалении содержимого</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Ошибка при удалении обновлений</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Ошибка при удалении DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Удалить установленное содержимое игр?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Удалить установленные обновления игры?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Удалить установленные DLC игры?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Удалить запись</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Успешно удалено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Установленная игра успешно удалена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Установленное обновление успешно удалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Для этой игры не было установлено обновление.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Для этой игры не были установлены DLC.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Установленное DLC %1 было успешно удалено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Удалить переносной кэш шейдеров OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Удалить переносной кэш шейдеров Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Удалить весь переносной кэш шейдеров?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Удалить пользовательскую настройку игры?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Удалить кэш-хранилище?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Удалить файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Ошибка при удалении переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Кэш шейдеров для этой игры не существует.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Переносной кэш шейдеров успешно удалён.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Не удалось удалить переносной кэш шейдеров.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Ошибка при удалении конвейерного кэша Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Не удалось удалить конвейерный кэш шейдеров.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Ошибка при удалении переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Переносной кэш шейдеров успешно удален.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Ошибка при удалении папки переносного кэша шейдеров.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Ошибка при удалении пользовательской настройки</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Пользовательская настройка для этой игры не существует.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Пользовательская настройка игры успешно удалена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Не удалось удалить пользовательскую настройку игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Не удалось извлечь RomFS!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Полный</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Скелет</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Выберите режим дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Извлечение RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Извлечение RomFS прошло успешно!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Операция выполнена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Создать ярлык</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Успешно создан ярлык в %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Это создаст ярлык для текущего AppImage. Он может не работать после обновлений. Продолжить?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Создать иконку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Невозможно создать файл иконки. Путь &quot;%1&quot; не существует и не может быть создан.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Ошибка открытия %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Выбрать папку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Свойства</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Не удалось загрузить свойства игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Загрузить файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Открыть папку извлечённого ROM&apos;а</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Выбрана недопустимая папка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Установить файлы</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Установка файла &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Результаты установки</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n файл был недавно установлен
@@ -5428,7 +5428,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n файл был перезаписан
@@ -5438,7 +5438,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n файл не удалось установить
@@ -5448,387 +5448,387 @@ Please, only use this feature to install updates and DLC.</source>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Системное приложение</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Системный архив</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Обновление системного приложения</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Пакет прошивки (Тип А)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Пакет прошивки (Тип Б)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Игра</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Обновление игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Дельта-титул</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Выберите тип установки NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Ошибка установки</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Тип приложения, который вы выбрали для NCA, недействителен.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Файл не найден</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>Файл &quot;%1&quot; не найден</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>ОК</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Не удовлетворены системные требования</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Ваша система не соответствует рекомендуемым системным требованиям. Отчеты о совместимости были отключены.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Отсутствует аккаунт yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Ошибка при открытии URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Запись TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Перезаписать файл игрока 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Обнаружена недопустимая конфигурация</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Текущий amiibo был убран</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Ошибка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Текущая игра не ищет amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Файл Amiibo (%1);; Все Файлы (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Загрузить Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Ошибка загрузки данных Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Выбранный файл не является допустимым amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Выбранный файл уже используется</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Произошла неизвестная ошибка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Апплет контроллера</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Сделать скриншот</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Изображение PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Состояние TAS: Выполняется %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Состояние TAS: Записывается %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Состояние TAS: Простой %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Состояние TAS: Неверное</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>[&amp;S] Остановка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>[&amp;S] Начать</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>[&amp;E] Закончить запись</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>[&amp;E] Запись</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<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="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Масштаб: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Скорость: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Скорость: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Игра: %1 FPS (Неограниченно)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Игра: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Кадр: %1 мс</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>БЕЗ СГЛАЖИВАНИЯ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>ГРОМКОСТЬ: ЗАГЛУШЕНА</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>ГРОМКОСТЬ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Подтвердите перерасчет ключа</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5845,37 +5845,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Отсутствуют предохранители</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Отсутствует BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Отсутствует BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- Отсутствует PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Компоненты расчета отсутствуют</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5884,49 +5884,49 @@ on your system&apos;s performance.</source>
от производительности вашей системы.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Получение ключей</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Не удалось расшифровать системный архив</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Ключи шифрования не смогли расшифровать прошивку. &lt;br&gt;Пожалуйста, следуйте &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;краткому руководству пользователя yuzu&lt;/a&gt; чтобы получить все ваши ключи, прошивку и игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Выберите цель для дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Пожалуйста, выберите, какой RomFS вы хотите сдампить.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Вы уверены, что хотите закрыть yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6439,11 +6439,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Включение/отключение звука</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6466,117 +6467,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Основное окно</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Уменьшить громкость звука</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Повысить громкость звука</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Сделать скриншот</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Изменить адаптирующий фильтр</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Изменить режим консоли</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Изменить точность ГП</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Продолжение/Пауза эмуляции</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Выйти из полноэкранного режима</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Выйти из yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Полный экран</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Загрузить файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Загрузить/удалить Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Перезапустить эмуляцию</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Остановить эмуляцию</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Запись TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Сброс TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Старт/Стоп TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Переключить панель поиска</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Переключить ограничение частоты кадров</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Переключить панорамирование мыши</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Переключить панель состояния</translation>
</message>
@@ -8142,7 +8142,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8150,78 +8150,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Пользователи</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Создатель профиля</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Выбор профиля</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Редактор иконки профиля</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Редактор никнейма профиля</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Кто будет получать очки?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Кто использует Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Кто совершает эту покупку?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Кто публикует?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Выберите пользователя для привязки к учетной записи Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Изменить настройки для какого пользователя?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Форматировать данные для какого пользователя?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Какой пользователь будет переходить на другую консоль?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Отправить сохранение какому пользователю?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Выберите пользователя:</translation>
</message>
diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts
index 5bd39b5ab..0233df24c 100644
--- a/dist/languages/sv.ts
+++ b/dist/languages/sv.ts
@@ -1880,7 +1880,7 @@ avgjord kod.&lt;/div&gt;
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2297,33 +2297,33 @@ avgjord kod.&lt;/div&gt;
<translation>Bakgrundsfärg:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -4830,971 +4830,971 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Laddar WebApplet...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Avaktivera Webbappletten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Mängden shaders som just nu byggs</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Nuvarande emuleringshastighet. Värden över eller under 100% indikerar på att emulationen körs snabbare eller långsammare än en Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Hur många bilder per sekund som spelet just nu visar. Detta varierar från spel till spel och scen till scen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Paus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Varning Föråldrat Spelformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Fel vid laddning av ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>ROM-formatet stöds inte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Spardata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod-data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Fel Öppnar %1 Mappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Mappen finns inte!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Ta bort katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Framgångsrikt borttagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Ta Bort Anpassad Spelkonfiguration?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Radera fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Fel När Anpassad Konfiguration Raderades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS Extraktion Misslyckades!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Full</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Skelett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Välj RomFS Dump-Läge</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Extraherar RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Extraktion Lyckades!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Operationen var lyckad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Fel under öppning av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Välj Katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Spelegenskaperna kunde inte laddas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Ladda Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Öppna Extraherad ROM-Katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Ogiltig Katalog Vald</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Installera filer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installerar Fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Installera resultat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Systemapplikation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Systemapplikationsuppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Firmwarepaket (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Firmwarepaket (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Spel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Speluppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Spel DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Välj NCA-Installationsläge...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Misslyckades med Installationen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Filen hittades inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation> Hårdvarukraven uppfylls ej</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>yuzu Konto hittades inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Fel när URL öppnades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS Inspelning</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Överskriv spelare 1:s fil?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Ogiltig konfiguration upptäckt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Den aktuella amiibon har avlägsnats</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Fel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Det aktuella spelet letar ej efter amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo Fil (%1);; Alla Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Ladda Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Fel vid laddning av Amiibodata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Den valda filen är inte en giltig amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Den valda filen är redan använd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Ett okänt fel har inträffat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Kontroll-Applet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Skärmdump</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bild (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAStillstånd: pågående %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAStillstånd: spelar in %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAStillstånd: inaktiv %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAStillstånd: ogiltigt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighet: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Hastighet: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Spel: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Ruta: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Bekräfta Nyckel Rederivering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5811,37 +5811,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Saknade säkringar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Saknar BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Saknar BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- Saknar PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Deriveringsdelar saknas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5850,49 +5850,49 @@ Detta kan ta upp till en minut beroende
på systemets prestanda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Härleda Nycklar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Välj RomFS Dumpa Mål</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6404,11 +6404,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation type="unfinished"/>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6431,117 +6432,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Skärmdump</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Fullskärm</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Ladda Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation type="unfinished"/>
</message>
@@ -8098,7 +8098,7 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran.</translation
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8106,78 +8106,78 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran.</translation
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Användare</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profilväljare</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Välj en användare:</translation>
</message>
diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts
index 6062e6b79..2b9fd3c4f 100644
--- a/dist/languages/tr_TR.ts
+++ b/dist/languages/tr_TR.ts
@@ -1892,7 +1892,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2309,33 +2309,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Arkaplan Rengi:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation type="unfinished"/>
</message>
@@ -4844,575 +4844,575 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Web Uygulaması Yükleniyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Web Uygulamasını Devre Dışı Bırak</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Web uygulamasını kapatmak bilinmeyen hatalara neden olabileceğinden dolayı sadece Super Mario 3D All-Stars için kapatılması önerilir. Web uygulamasını kapatmak istediğinize emin misiniz?
(Hata ayıklama ayarlarından tekrar açılabilir)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Şu anda derlenen shader miktarı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Geçerli seçili çözünürlük ölçekleme çarpanı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Geçerli emülasyon hızı. %100&apos;den yüksek veya düşük değerler emülasyonun bir Switch&apos;den daha hızlı veya daha yavaş çalıştığını gösterir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Oyunun şuanda saniye başına kaç kare gösterdiği. Bu oyundan oyuna ve sahneden sahneye değişiklik gösterir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Son Dosyaları Temizle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Devam Et</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Duraklat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Uyarı, Eski Oyun Formatı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>ROM yüklenirken hata oluştu!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Bu ROM biçimi desteklenmiyor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Yazılım kapatılıyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Kayıt Verisi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod Verisi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>%1 klasörü açılırken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Klasör mevcut değil!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<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="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<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="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>İçerik Kaldırma Hatası</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Güncelleme Kaldırma hatası</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>DLC Kaldırma Hatası</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Yüklenmiş Oyun İçeriğini Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Yüklenmiş Oyun Güncellemesini Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Yüklenmiş DLC&apos;yi Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Girdiyi Kaldır</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Başarıyla Kaldırıldı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<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="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<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="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<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="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<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="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<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="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<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="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<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="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<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="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<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="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Dosyayı Sil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<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="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<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="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<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="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<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="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Vulkan Pipeline Önbelleği Kaldırılırken Hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Sürücü pipeline önbelleği kaldırılamadı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<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="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<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="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<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="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<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="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<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="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<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="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<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="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS Çıkartımı Başarısız!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Full</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Çerçeve</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS Dump Modunu Seçiniz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>RomFS çıkartılıyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>İptal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Çıkartımı Başarılı!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>İşlem başarıyla tamamlandı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Kısayol Oluştur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>%1 dizinine kısayol oluşturuldu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Bu seçenek, şu anki AppImage dosyasının kısayolunu oluşturacak. Uygulama güncellenirse kısayol çalışmayabilir. Devam edilsin mi?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Simge Oluştur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Simge dosyası oluşturulamadı. &quot;%1&quot; dizini yok ve oluşturulamıyor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>%1 Açılırken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Klasör Seç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Özellikler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Oyun özellikleri yüklenemedi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Dosya Aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Çıkartılmış ROM klasörünü aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Geçersiz Klasör Seçildi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Dosya Kur</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot; dosyası kuruluyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Kurulum Sonuçları</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n dosya güncel olarak yüklendi
@@ -5420,7 +5420,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n dosyanın üstüne yazıldı
@@ -5428,7 +5428,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n dosya yüklenemedi
@@ -5436,387 +5436,387 @@ 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="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Sistem Uygulaması</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Sistem Arşivi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Sistem Uygulama Güncellemesi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Yazılım Paketi (Tür A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Yazılım Paketi (Tür B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Oyun</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Oyun Güncellemesi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>Oyun DLC&apos;si</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Başlık</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>NCA Kurulum Tipi Seçin...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Kurulum Başarısız Oldu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Dosya Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>Dosya &quot;%1&quot; Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>Tamam</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Donanım gereksinimleri karşılanmıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Sisteminiz, önerilen donanım gereksinimlerini karşılamıyor. Uyumluluk raporlayıcı kapatıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Kayıp yuzu Hesabı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>URL açılırken bir hata oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS kayıtta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<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="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Geçersiz yapılandırma tespit edildi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Amiibo kaldırıldı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Aktif oyun amiibo beklemiyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo Dosyası (%1);; Tüm Dosyalar (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Amiibo Yükle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Amiibo verisi yüklenirken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Seçtiğiniz dosya geçerli bir amiibo değil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Seçtiğiniz dosya hali hazırda kullanılıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Bilinmeyen bir hata oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Kontrolcü Uygulaması</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Ekran Görüntüsü Al</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG görüntüsü (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS durumu: %1%2 çalışıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS durumu: %1 kaydediliyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS durumu: %1%2 boşta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS durumu: Geçersiz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Çalıştırmayı durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Başlat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>K&amp;aydetmeyi Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>K&amp;aydet</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<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="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<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="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Hız %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Hız: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Oyun: %1 FPS (Sınırsız)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Oyun: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Kare: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>AA YOK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>SES: KAPALI</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>SES: %%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Anahtar Yeniden Türetimini Onayla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5833,37 +5833,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Anahtarlar Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Türeten Bileşenleri Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5872,49 +5872,49 @@ Bu sistem performansınıza bağlı olarak
bir dakika kadar zaman alabilir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Anahtarlar Türetiliyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS Dump Hedefini Seçiniz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6426,11 +6426,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Sesi Sustur/Aç</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6453,117 +6454,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Ana Pencere</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Ses Kapa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Ses Aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Ekran Görüntüsü Al</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Uyarlanan Filtreyi Değiştir</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Takılı Modu Kullan</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>GPU Doğruluğunu Değiştir</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Sürdür/Emülasyonu duraklat</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Tam Ekrandan Çık</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Yuzu&apos;dan çık</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Tam Ekran</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Dosya Aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Amiibo Yükle/Kaldır</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Emülasyonu Yeniden Başlat</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Emülasyonu Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS Kaydet</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS Sıfırla</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS Başlat/Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Filtre Çubuğunu Aç/Kapa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>FPS Limitini Aç/Kapa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Mouse ile Kaydırmayı Aç/Kapa</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Durum Çubuğunu Aç/Kapa</translation>
</message>
@@ -8129,7 +8129,7 @@ Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin.</
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8137,78 +8137,78 @@ Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin.</
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Kullanıcılar</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Profil Oluşturucu</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Profil Seçici</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Profil Simgesi Düzenleyici</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Profil Kullanıcı İsmi Düzenleyici</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Puanları kim kazanacak?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Nintendo eShop&apos;u kim kullanıyor?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Bu satın almayı kim gerçekleştiriyor?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Gönderiyi kim yapıyor?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Nintendo Hesabına bağlanacak bir kullanıcı seçin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Hangi kullanıcının ayarları değiştirilsin?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Hangi kullanıcının verisi biçimlendirilsin?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Hangi kullanıcı başka bir konsola taşınacak?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Hangi kullanıcı için kayıtlı veri gönderilsin?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Kullanıcı Seç:</translation>
</message>
diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts
index 0467a7a91..fffc557d5 100644
--- a/dist/languages/uk.ts
+++ b/dist/languages/uk.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Фоновий колір:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Вимкнено</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Верт. синхронізацію вимкнено</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Рекомендовано</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Увімкнено</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Верт. синхронізація увімкнена</translation>
</message>
@@ -4850,575 +4850,575 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Запущено гру</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Завантаження веб-аплета...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Вимкнути веб-аплет</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Вимкнення веб-апплета може призвести до несподіваної поведінки, і його слід вимикати лише заради Super Mario 3D All-Stars. Ви впевнені, що хочете вимкнути веб-апплет?
(Його можна знову ввімкнути в налаштуваннях налагодження.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Кількість створюваних шейдерів на цей момент</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Поточний обраний множник масштабування роздільної здатності.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>Поточна швидкість емуляції. Значення вище або нижче 100% вказують на те, що емуляція йде швидше або повільніше, ніж на Switch.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>Кількість кадрів на секунду в цей момент. Значення буде змінюватися між іграми та сценами.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>Час, який потрібен для емуляції 1 кадру Switch, не беручи до уваги обмеження FPS або вертикальну синхронізацію. Для емуляції в повній швидкості значення має бути не більше 16,67 мс.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Увімкнути звук</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Вимкнути звук</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Скинути гучність</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>[&amp;C] Очистити нещодавні файли</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>[&amp;C] Продовжити</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>[&amp;P] Пауза</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Попередження застарілий формат гри</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Помилка під час завантаження ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Формат ROM&apos;а не підтримується.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>Сталася помилка під час ініціалізації відеоядра.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 зіткнувся з помилкою під час запуску відеоядра. Зазвичай це спричинено застарілими драйверами ГП, включно з інтегрованими. Перевірте журнал для отримання більш детальної інформації. Додаткову інформацію про доступ до журналу дивіться на наступній сторінці: &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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Сталася невідома помилка. Будь ласка, перевірте журнал для подробиць.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-бітний)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-бітний)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Закриваємо програму...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Збереження</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Дані модів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Помилка під час відкриття папки %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>Папка не існує!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Помилка під час відкриття переносного кешу шейдерів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Не вдалося створити папку кешу шейдерів для цієї гри.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Помилка під час видалення вмісту</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Помилка під час видалення оновлень</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Помилка під час видалення DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Видалити встановлений вміст ігор?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Видалити встановлені оновлення гри?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Видалити встановлені DLC гри?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Видалити запис</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Успішно видалено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Встановлену гру успішно видалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Встановлене оновлення успішно видалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Для цієї гри не було встановлено оновлення.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Для цієї гри не було встановлено DLC.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Встановлений DLC %1 було успішно видалено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Видалити переносний кеш шейдерів OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Видалити переносний кеш шейдерів Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Видалити весь переносний кеш шейдерів?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Видалити користувацьке налаштування гри?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Видалити кеш-сховище?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Видалити файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Помилка під час видалення переносного кешу шейдерів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Кеш шейдерів для цієї гри не існує.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Переносний кеш шейдерів успішно видалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Не вдалося видалити переносний кеш шейдерів.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Помилка під час видалення конвеєрного кешу Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Не вдалося видалити конвеєрний кеш шейдерів.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Помилка під час видалення переносного кешу шейдерів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Переносний кеш шейдерів успішно видалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Помилка під час видалення папки переносного кешу шейдерів.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Помилка під час видалення користувацького налаштування</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Користувацьких налаштувань для цієї гри не існує.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Користувацьке налаштування гри успішно видалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Не вдалося видалити користувацьке налаштування гри.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Не вдалося вилучити RomFS!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Повний</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Скелет</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Виберіть режим дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Вилучення RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Скасувати</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Вилучення RomFS пройшло успішно!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>Операція завершилася успішно.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Створити ярлик</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Успішно створено ярлик у %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Це створить ярлик для поточного AppImage. Він може не працювати після оновлень. Продовжити?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Створити іконку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Неможливо створити файл іконки. Шлях &quot;%1&quot; не існує і не може бути створений.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Помилка відкриття %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Обрати папку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Властивості</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Не вдалося завантажити властивості гри.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Завантажити файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Відкрити папку вилученого ROM&apos;а</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>Вибрано неприпустиму папку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Встановити файли</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<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="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Встановлення файлу &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Результати встановлення</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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.
Будь ласка, використовуйте цю функцію тільки для встановлення оновлень і завантажуваного контенту.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n файл було нещодавно встановлено
@@ -5428,7 +5428,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="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n файл було перезаписано
@@ -5438,7 +5438,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="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n файл не вдалося встановити
@@ -5448,387 +5448,387 @@ Please, only use this feature to install updates and DLC.</source>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Системний додаток</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Системний архів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Оновлення системного додатку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Пакет прошивки (Тип А)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Пакет прошивки (Тип Б)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Гра</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Оновлення гри</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC до гри</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Дельта-титул</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>Виберіть тип установки NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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:
(У більшості випадків, підходить стандартний вибір &quot;Гра&quot;.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Помилка встановлення</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Тип додатку, який ви вибрали для NCA, недійсний.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>Файл не знайдено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>Файл &quot;%1&quot; не знайдено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>ОК</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Не задоволені системні вимоги</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Ваша система не відповідає рекомендованим системним вимогам. Звіти про сумісність було вимкнено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Відсутній обліковий запис yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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>Щоб надіслати звіт про сумісність гри, необхідно прив&apos;язати свій обліковий запис yuzu. &lt;br&gt;&lt;br/&gt;Щоб прив&apos;язати свій обліковий запис yuzu, перейдіть у розділ Емуляція &amp;gt; Параметри &amp;gt; Мережа.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Помилка під час відкриття URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Запис TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Перезаписати файл гравця 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Виявлено неприпустиму конфігурацію</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Поточний amiibo було прибрано</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Помилка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Поточна гра не шукає amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Файл Amiibo (%1);; Всі Файли (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Завантажити Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Помилка під час завантаження даних Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Обраний файл не є допустимим amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Обраний файл уже використовується</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Виникла невідома помилка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Аплет контролера</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Зробити знімок екрану</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Зображення PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Стан TAS: Виконується %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Стан TAS: Записується %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Стан TAS: Простий %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Стан TAS: Неприпустимий</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>[&amp;S] Зупинка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>[&amp;S] Почати</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>[&amp;E] Закінчити запис</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>[&amp;E] Запис</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<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="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Масштаб: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Швидкість: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Швидкість: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Гра: %1 FPS (Необмежено)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Гра: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Кадр: %1 мс</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>БЕЗ ЗГЛАДЖУВАННЯ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>ГУЧНІСТЬ: ЗАГЛУШЕНА</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>ГУЧНІСТЬ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Підтвердіть перерахунок ключа</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5845,37 +5845,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Відсутні запобіжники</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- Відсутній BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Відсутній BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Відсутній PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Компоненти розрахунку відсутні</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5884,49 +5884,49 @@ on your system&apos;s performance.</source>
від продуктивності вашої системи.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Отримання ключів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Не вдалося розшифрувати системний архів</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Ключі шифрування не змогли розшифрувати прошивку.&lt;br&gt;Будь ласка, дотримуйтесь &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;короткого керівництва користувача yuzu&lt;/a&gt; щоб отримати всі ваші ключі, прошивку та ігри.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Оберіть ціль для дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Будь ласка, виберіть, який RomFS ви хочете здампити.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Ви впевнені, що хочете закрити yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6439,11 +6439,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Увімкнення/вимкнення звуку</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6466,117 +6467,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Основне вікно</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Зменшити гучність звуку</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Підвищити гучність звуку</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Зробити знімок екрану</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Змінити адаптуючий фільтр</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Змінити режим консолі</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Змінити точність ГП</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Продовження/Пауза емуляції</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Вийти з повноекранного режиму</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Вийти з yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Повний екран</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Завантажити файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Завантажити/видалити Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Перезапустити емуляцію</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Зупинити емуляцію</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Запис TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Скидання TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Старт/Стоп TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Переключити панель пошуку</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Переключити обмеження частоти кадрів</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Переключити панорамування миші</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Переключити панель стану</translation>
</message>
@@ -8142,7 +8142,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8150,78 +8150,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Користувачі</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Творець профілю</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Вибір профілю</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Редактор іконки профілю</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Редактор нікнейма профілю</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Хто отримуватиме очки?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Хто використовує Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Хто здійснює цю покупку?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Хто публікує?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Виберіть користувача для прив&apos;язки до облікового запису Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Змінити налаштування для якого користувача?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Форматувати дані для якого користувача?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Який користувач буде переходити на іншу консоль?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Надіслати збереження якому користувачеві?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Оберить користувача</translation>
</message>
diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts
index d0f142890..79ff28f92 100644
--- a/dist/languages/vi.ts
+++ b/dist/languages/vi.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Màu nền:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Tắt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Tắt Vsync</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Đề xuất</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Bật</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Bật Vsync</translation>
</message>
@@ -4850,783 +4850,783 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr
<translation>Đang chạy một game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Đang tải applet web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Tắt applet web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Tắt applet web có thể dẫn đến hành vi không xác định và chỉ nên được sử dụng với Super Mario 3D All-Stars. Bạn có chắc chắn muốn tắt applet web không?
(Có thể được bật lại trong cài đặt Gỡ lỗi.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Số lượng shader đang được dựng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Bội số tỷ lệ độ phân giải được chọn hiện tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<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="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<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à game đang hiển thị. Điều này sẽ thay đổi giữa các game và các cảnh khác nhau.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Bật tiếng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Tắt tiếng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Đặt lại âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Xoá tập tin gần đây</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Tiếp tục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Tạm dừng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>Cảnh báo định dạng game đã lỗi thời</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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 thư mục ROM đã giải nén cho game này, 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. Thư mục ROM đã giải nén có thể thiếu các biểu tượng, 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 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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>Lỗi khi nạp ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>Định dạng ROM này không được hỗ trợ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 đã gặp lỗi khi chạy lõi video. Điều này thường xảy ra do phiên bản driver GPU đã cũ, bao gồm cả driver tích hợp. Vui lòng xem nhật ký để biết thêm chi tiết. Để biết thêm thông tin về cách truy cập nhật ký, vui lòng xem trang sau: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Cách tải lên tập tin nhật ký&lt;/a&gt;. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Lỗi khi nạp ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt; để trích xuất lại các tập tin của bạn.&lt;br&gt;Bạn có thể tham khảo yuzu wiki&lt;/a&gt; hoặc yuzu Discord&lt;/a&gt;để được hỗ trợ. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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 xem nhật ký để biết thêm chi tiết.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Đang đóng phần mềm...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Dữ liệu save</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dữ liệu mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>Lỗi khi mở thư mục %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<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="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Lỗi khi mở bộ nhớ đệm shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Thất bại khi tạo thư mục bộ nhớ đệm shader cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Lỗi khi loại bỏ nội dung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Lỗi khi loại bỏ bản cập nhật</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Lỗi khi loại bỏ DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Loại bỏ nội dung game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Loại bỏ bản cập nhật game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Loại bỏ DLC game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Xoá mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Loại bỏ thành công</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Loại bỏ thành công base game đã cài đặt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Base game không được cài đặt trong NAND và không thể loại bỏ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Loại bỏ thành công bản cập nhật đã cài đặt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Không có bản cập nhật nào được cài đặt cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Không có DLC nào được cài đặt cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Loại bỏ thành công %1 DLC đã cài đặt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Xoá bộ nhớ đệm shader OpenGL chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Xoá bộ nhớ đệm shader Vulkan chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Xoá tất cả bộ nhớ đệm shader chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Loại bỏ cấu hình game tuỳ chỉnh?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Loại bỏ bộ nhớ đệm?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Loại bỏ tập tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Lỗi khi loại bỏ bộ nhớ đệm shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Bộ nhớ đệm shader cho title này không tồn tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Thành công loại bỏ bộ nhớ đệm shader chuyển được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Thất bại khi xoá bộ nhớ đệm shader chuyển được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Lỗi khi xoá bộ nhớ đệm pipeline Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Thất bại khi xoá bộ nhớ đệm pipeline của driver.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Lỗi khi loại bỏ bộ nhớ đệm shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Thành công loại bỏ tất cả bộ nhớ đệm shader chuyển được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Thất bại khi loại bỏ thư mục bộ nhớ đệm shader.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Lỗi khi loại bỏ cấu hình tuỳ chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Cấu hình tuỳ chỉnh cho title này không tồn tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Loại bỏ thành công cấu hình game tuỳ chỉnh.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Thất bại khi xoá cấu hình game tuỳ chỉnh.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>Giải nén RomFS không thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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 các 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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Đầy đủ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Khung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>Chọn chế độ trích xuất RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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 được trích xuất.&lt;br&gt;Chế độ Đầy đủ sẽ sao chép toàn bộ tập tin vào một thư mục mới trong khi &lt;br&gt;chế độ Khung chỉ tạo cấu trúc thư mục.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Không đủ bộ nhớ trống tại %1 để trích xuất RomFS. Hãy giải phóng bộ nhớ hoặc chọn một thư mục trích xuất khác tại Giả lập &gt; Cấu hình &gt; Hệ thống &gt; Hệ thống tập tin &gt; Thư mục trích xuất gốc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Giải nén RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Hủy bỏ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Giải nén RomFS thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<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="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Không thể thực hiện kiểm tra tính toàn vẹn!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>Chưa kiểm tra sự hợp lệ của nội dung tập tin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Kiểm tra tính toàn vẹn thất bại!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Nội dung tập tin có thể bị hỏng.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Đang kiểm tra tính toàn vẹn...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Kiểm tra tính toàn vẹn thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Tạo lối tắt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Thành công tạo lối tắt tại %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Việc này sẽ tạo một lối tắt tới AppImage hiện tại. Điều này có thể không hoạt động tốt nếu bạn cập nhật. Tiếp tục?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Tạo biểu tượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Không thể tạo tập tin biểu tượng. Đường dẫn &quot;%1&quot; không tồn tại và không thể tạo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Lỗi khi mở %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Chọn thư mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Thuộc tính</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>Không thể tải thuộc tính của game.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Nạp tập tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>Mở thư mục ROM đã giải nén</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<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="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Thư mục mà bạn đã chọn không chứa tập tin &apos;main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Cài đặt tập tin</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n tập tin còn lại</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<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="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Kết quả cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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>Để tránh xung đột có thể xảy ra, chúng tôi không khuyến khích người dùng cài đặt base game vào NAND.
Vui lòng, chỉ sử dụng tính năng này để cài đặt các bản cập nhật và DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n tập tin đã được cài đặt mới
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n tập tin đã được ghi đè
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n tập tin thất bại khi cài đặt
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Ứng dụng hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Bản lưu trữ của hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>Cập nhật ứng dụng hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>Gói firmware (Loại A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>Gói firmware (Loại B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Cập nhật game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>DLC game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Title Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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 title 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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>Cài đặt thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Loại title mà bạn đã chọn cho NCA không hợp lệ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<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="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Yêu cầu phần cứng không được đáp ứng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Hệ thống của bạn không đáp ứng yêu cầu phần cứng được đề xuất. Báo cáo độ tương thích đã bị vô hiệu hoá.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Thiếu tài khoản yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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 game 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; Cấu hình &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Lỗi khi mở URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Không thể mở URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Ghi lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Ghi đè tập tin của người chơi 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Đã phát hiện cấu hình không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Tay cầm handheld không thể được sử dụng trong chế độ docked. Pro Controller sẽ được chọn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Amiibo hiện tại đã được loại bỏ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Lỗi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Game hiện tại không tìm kiếm amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<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="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Nạp Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>Lỗi khi nạp dữ liệu Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Tập tin đã chọn không phải là amiibo hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Tập tin đã chọn đã được sử dụng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Đã xảy ra lỗi không xác định</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5635,193 +5635,193 @@ Vui lòng, chỉ sử dụng tính năng này để cài đặt các bản cập
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet tay cầm</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Chụp ảnh màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Hình ảnh PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Trạng thái TAS: Đang chạy %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Trạng thái TAS: Đang ghi %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Trạng thái TAS: Đang chờ %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Trạng thái TAS: Không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Dừng chạy</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Bắt đầu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Dừng G&amp;hi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;hi</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Đang dựng: %n shader</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Tỉ lệ thu phóng: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Tốc độ: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Tốc độ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Game: %1 FPS (Đã mở khoá)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Game: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Khung hình: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>ÂM LƯỢNG: TẮT TIẾNG</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>ÂM LƯỢNG: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Xác nhận chuyển hoá lại key</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5838,37 +5838,37 @@ và tạo một bản sao lưu.
Việc này sẽ xóa các tập tin key tự động sinh ra của bạn và chạy lại mô-đun chuyển hoá key.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Thiếu fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Thiếu BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Thiếu BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Thiếu PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Thiếu các thành phần chuyển hoá</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Keys mã hoá bị thiếu. &lt;br&gt;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt; để lấy tất cả key, firmware và game của bạn.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5877,49 +5877,49 @@ on your system&apos;s performance.</source>
hệ thống của bạn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Đang chuyển hoá key</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Giải mã bản lưu trữ của hệ thống thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Keys mã hoá thất bại khi giải mã firmware. &lt;br&gt;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt;để lấy tất cả key, firmware và game của bạn. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>Chọn thư mục để trích xuất RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Vui lòng chọn RomFS mà bạn muốn trích xuất.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6432,11 +6432,12 @@ Tin nhắn gỡ lỗi:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Tắt/Bật tiếng</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6459,117 +6460,116 @@ Tin nhắn gỡ lỗi:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Cửa sổ chính</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Giảm âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Tăng âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Chụp ảnh màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Thay đổi bộ lọc điều chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Thay đổi chế độ docked</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Thay đổi độ chính xác GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Tiếp tục/Tạm dừng giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Thoát chế độ toàn màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Thoát yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Toàn màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Nạp tập tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Nạp/Loại bỏ Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Khởi động lại giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Dừng giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Ghi lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Đặt lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Bắt đầu/Dừng TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Hiện/Ẩn thanh lọc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Bật/Tắt giới hạn tốc độ khung hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Bật/Tắt lia chuột</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Hiện/Ẩn thanh trạng thái</translation>
</message>
@@ -8135,7 +8135,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.</
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8143,78 +8143,78 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.</
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Người dùng</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Tạo hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Chọn hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Sửa biểu tượng hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Sửa biệt danh hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Ai sẽ nhận điểm?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Ai đang sử dụng Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Ai đang thực hiện giao dịch này?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Ai đang đăng bài?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Chọn một người dùng để liên kết với tài khoản Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Thay đổi cài đặt cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Định dạng dữ liệu cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Người dùng nào sẽ được chuyển tới console khác?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Gửi dữ liệu save cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Chọn một người dùng:</translation>
</message>
diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts
index 88c5f99dd..9702b7bb8 100644
--- a/dist/languages/vi_VN.ts
+++ b/dist/languages/vi_VN.ts
@@ -1897,7 +1897,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"/>
</message>
<message>
@@ -2314,33 +2314,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>Màu nền:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>Tắt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>Tắt Vsync</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>Đề xuất</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>Bật</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>Bật Vsync</translation>
</message>
@@ -4850,783 +4850,783 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr
<translation>Đang chạy một game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>Đang tải applet web...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>Tắt applet web</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>Tắt applet web có thể dẫn đến hành vi không xác định và chỉ nên được sử dụng với Super Mario 3D All-Stars. Bạn có chắc chắn muốn tắt applet web không?
(Có thể được bật lại trong cài đặt Gỡ lỗi.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>Số lượng shader đang được dựng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>Bội số tỷ lệ độ phân giải được chọn hiện tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<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="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<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ừ trò chơi này đến trò chơi kia và khung cảnh này đến khung cảnh kia.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>Bật tiếng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>Tắt tiếng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>Đặt lại âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Xoá tập tin gần đây</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>&amp;Tiếp tục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;Tạm dừng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<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="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<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="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<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="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<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="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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 đã gặp lỗi khi chạy lõi video. Điều này thường xảy ra do phiên bản driver GPU đã cũ, bao gồm cả driver tích hợp. Vui lòng xem nhật ký để biết thêm chi tiết. Để biết thêm thông tin về cách truy cập nhật ký, vui lòng xem trang sau: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Cách tải lên tập tin nhật ký&lt;/a&gt;. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Lỗi xảy ra khi nạp ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt; để trích xuất lại các tệp của bạn.&lt;br&gt;Bạn có thể tham khảo yuzu wiki&lt;/a&gt; hoặc yuzu Discord&lt;/a&gt;để được hỗ trợ. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<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="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>Đang đóng phần mềm...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>Dữ liệu save</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Dữ liệu mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<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="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<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="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Lỗi khi mở bộ nhớ cache shader có thể chuyển.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Thất bại khi tạo thư mục bộ nhớ cache shader cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>Lỗi khi loại bỏ nội dung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>Lỗi khi loại bỏ cập nhật</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>Lỗi khi loại bỏ DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>Loại bỏ nội dung game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>Loại bỏ bản cập nhật game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>Loại bỏ DLC game đã cài đặt?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>Xoá mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>Loại bỏ thành công</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>Loại bỏ thành công base game đã cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Base game không được cài đặt trong NAND và không thể loại bỏ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>Loại bỏ thành công bản cập nhật đã cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>Không có bản cập nhật nào được cài đặt cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>Không có DLC nào được cài đặt cho title này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Loại bỏ thành công %1 DLC đã cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Xoá bộ nhớ cache shader OpenGL chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Xoá bộ nhớ cache shader Vulkan chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Xoá tất cả bộ nhớ cache shader chuyển được?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>Loại bỏ cấu hình game tuỳ chỉnh?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>Xoá bộ nhớ cache?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>Xoá tập tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Lỗi khi xoá bộ nhớ cache shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>Bộ nhớ cache shader cho title này không tồn tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Thành công loại bỏ bộ nhớ cache shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Thất bại khi xoá bộ nhớ cache shader chuyển được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>Lỗi khi xoá bộ nhớ cache pipeline Vulkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>Thất bại khi xoá bộ nhớ cache pipeline của driver.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Lỗi khi loại bỏ bộ nhớ cache shader chuyển được</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Thành công loại bỏ tât cả bộ nhớ cache shader chuyển được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Thất bại khi loại bỏ thư mục bộ nhớ cache shader.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>Lỗi khi loại bỏ cấu hình tuỳ chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Cấu hình tuỳ chỉnh cho title này không tồn tại.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Loại bỏ thành công cấu hình game tuỳ chỉnh.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Thất bại khi xoá cấu hình game tuỳ chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<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="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>Đầy</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>Sườn</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<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="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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>Không đủ bộ nhớ trống tại %1 để trích xuất RomFS. Hãy giải phóng bộ nhớ hoặc chọn một thư mục trích xuất khác tại Giả lập &gt; Thiết lập &gt; Hệ thống &gt; Hệ thống tệp &gt; Thư mục trích xuất gốc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>Khai thác RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>Hủy bỏ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Khai thác RomFS thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<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="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>Không thể thực hiện kiểm tra tính toàn vẹn!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>Chưa kiểm tra sự hợp lệ của nội dung tập tin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>Kiểm tra tính toàn vẹn thất bại!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>Nội dung tập tin có thể bị hỏng.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>Đang kiểm tra tính toàn vẹn...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>Kiểm tra tính toàn vẹn thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>Tạo lối tắt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>Thành công tạo lối tắt tại %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>Việc này sẽ tạo một lối tắt tới AppImage hiện tại. Điều này có thể không hoạt động tốt nếu bạn cập nhật. Tiếp tục?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>Tạo icon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>Không thể tạo tập tin icon. Đường dẫn &quot;%1&quot; không tồn tại và không thể tạo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>Lỗi khi mở %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>Chọn danh mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>Thuộc tính</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<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="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>Nạp tệp tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<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="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<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="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>Cài đặt tập tin</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n tập tin còn lại</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<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="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>Kết quả cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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>Để tránh xung đột có thể xảy ra, chúng tôi không khuyến khích người dùng cài base games vào NAND.
Vui lòng, chỉ sử dụng tính năng này để cài các bản cập nhật và DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n đã được cài đặt mới
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n tập tin đã được ghi đè
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n tập tin thất bại khi cài đặt
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>Ứng dụng hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>Hệ thống lưu trữ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<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="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<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="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<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="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>Trò chơi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>Cập nhật trò chơi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<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="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Tiêu đề Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<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="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<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="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<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="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<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="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<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="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>Yêu cầu phần cứng không được đáp ứng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>Hệ thống của bạn không đáp ứng yêu cầu phần cứng được đề xuất. Báo cáo tương thích đã được tắt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>Thiếu tài khoản yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>Lỗi khi mở URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Không thể mở URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>Ghi lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>Ghi đè tập tin của người chơi 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>Đã phát hiện cấu hình không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
<translation>Tay cầm handheld không thể được sử dụng trong chế độ docked. Pro Controller sẽ được chọn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>Amiibo hiện tại đã bị loại bỏ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>Lỗi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>Game hiện tại không tìm kiếm amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<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="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>Nạp dữ liệu Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<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="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>Tập tin đã chọn không phải là amiibo hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>Tập tin đã chọn đã được sử dụng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>Đã xảy ra lỗi không xác định</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5635,193 +5635,193 @@ Vui lòng, chỉ sử dụng tính năng này để cài các bản cập nhật
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>Applet tay cầm</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>Chụp ảnh màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>Hình ảnh PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>Trạng thái TAS: Đang chạy %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>Trạng thái TAS: Đang ghi %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>Trạng thái TAS: Đang chờ %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>Trạng thái TAS: Không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;Dừng chạy</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>&amp;Bắt đầu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>Dừng G&amp;hi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>G&amp;hi</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Đang dựng: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Tỉ lệ thu phóng: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>Tốc độ: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>Tốc độ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Game: %1 FPS (Đã mở khoá)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>Trò chơi: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>Khung hình: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>ÂM LƯỢNG: TẮT TIẾNG</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>ÂM LƯỢNG: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>Xác nhận mã khóa Rederivation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5838,37 +5838,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>Thiếu fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation> - Thiếu BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Thiếu BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation> - Thiếu PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>Thiếu các thành phần chuyển hoá</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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>Keys mã hoá bị thiếu. &lt;br&gt;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt; để lấy tất cả keys, firmware và games của bạn.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5877,49 +5877,49 @@ 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="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>Mã khóa xuất phát</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>Giải mã bản lưu trữ của hệ thống thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>Keys mã hoá thấy bại khi giải mã firmware. &lt;br&gt;Vui lòng tuân theo &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;hướng dẫn nhanh của yuzu&lt;/a&gt;để lấy tất cả keys, firmware và games của bạn. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<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="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<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="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<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="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6432,11 +6432,12 @@ Tin nhắn gỡ lỗi:</translation>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>Tắt/Bật tiếng</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6459,117 +6460,116 @@ Tin nhắn gỡ lỗi:</translation>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>Cửa sổ chính</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>Giảm âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>Tăng âm lượng</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>Chụp ảnh màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>Thay đổi bộ lọc điều chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>Đổi chế độ Docked</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>Thay đổi độ chính xác GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>Tiếp tục/Tạm dừng giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>Thoát chế độ toàn màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>Thoát yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>Toàn màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>Nạp tệp tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>Tải/Loại bỏ Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>Khởi động lại giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>Dừng giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>Ghi lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>Đặt lại TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>Bắt đầu/Dừng TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>Hiện/Ẩn thanh lọc</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>Bật/Tắt giới hạn tốc độ khung hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>Bật/Tắt di chuyển chuột</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>Hiện/Ẩn thanh trạng thái</translation>
</message>
@@ -8134,7 +8134,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.</
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8142,78 +8142,78 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.</
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>Người Dùng</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>Tạo hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>Chọn hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>Sửa biểu tượng hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>Sửa biệt danh hồ sơ</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>Ai sẽ nhận điểm?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>Ai đang sử dụng Nintendo eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>Ai đang thực hiện giao dịch này?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>Ai đang đăng bài?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>Chọn một người dùng để liên kết với tài khoản Nintendo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>Thay đổi cài đặt cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>Định dạng dữ liệu cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>Người dùng nào sẽ được chuyển tới console khác?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>Gửi dữ liệu save cho người dùng nào?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>Chọn một người dùng:</translation>
</message>
diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts
index 24fc4a258..d8cb70988 100644
--- a/dist/languages/zh_CN.ts
+++ b/dist/languages/zh_CN.ts
@@ -1898,7 +1898,7 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;选中时,禁用映射内存上载的重新排序,从而允许将上载与特定绘图关联起来。某些情况下可能会降低性能。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
@@ -2315,33 +2315,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>背景颜色:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>关闭</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>垂直同步关</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>推荐</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>开启</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>垂直同步开</translation>
</message>
@@ -4851,783 +4851,783 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>游戏正在运行</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>正在加载 Web 小程序...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>禁用 Web 小程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>禁用 Web 小程序可能会发生未知的行为,且只能在《超级马里奥 3D 全明星》中使用。您确定要禁用 Web 小程序吗?
(您可以在调试选项中重新启用它。)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>当前正在构建的着色器数量</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>当前选定的分辨率缩放比例。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>当前的模拟速度。高于或低于 100% 的值表示运行速度比实际的 Switch 更快或更慢。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>游戏当前运行的帧率。这将因游戏和场景的不同而有所变化。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>在不计算速度限制和垂直同步的情况下,模拟一个 Switch 帧的实际时间。若要进行全速模拟,这个数值不应超过 16.67 毫秒。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>取消静音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>静音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>重置音量</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>清除最近文件 (&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>继续 (&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>暂停 (&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>过时游戏格式警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>加载 ROM 时出错!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>该 ROM 格式不受支持。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>初始化视频核心时发生错误</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>发生了未知错误。请查看日志了解详情。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>正在关闭…</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>保存数据</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>Mod 数据</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>打开 %1 文件夹时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>文件夹不存在!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>打开可转移着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>为该游戏创建着色器缓存目录时失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>删除内容时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>删除更新时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>删除 DLC 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>删除已安装的游戏内容?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>删除已安装的游戏更新?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>删除已安装的游戏 DLC 内容?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>删除项目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>删除成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>成功删除已安装的游戏。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>成功删除已安装的游戏更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>这个游戏没有任何已安装的更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>这个游戏没有任何已安装的 DLC 。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>成功删除游戏 %1 安装的 DLC 。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>删除 OpenGL 模式的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>删除 Vulkan 模式的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>删除所有的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>移除自定义游戏设置?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>移除缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>删除文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>清除游玩时间</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>重置游玩时间?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>删除着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>这个游戏的着色器缓存不存在。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>成功删除着色器缓存。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>删除着色器缓存失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>删除 Vulkan 驱动程序管线缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>删除驱动程序管线缓存失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>删除着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>着色器缓存删除成功。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>删除着色器缓存目录失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>移除自定义游戏设置时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>这个游戏的自定义设置不存在。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>成功移除自定义游戏设置。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>移除自定义游戏设置失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 提取失败!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>完整</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>框架</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>选择 RomFS 转储模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>正在提取 RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 提取成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>操作成功完成。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>无法执行完整性验证!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>未检查文件的完整性。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>完整性验证失败!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>文件可能已经损坏。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>正在验证完整性...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>完整性验证成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>创建快捷方式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>您想以全屏模式启动游戏吗?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>%1 的快捷方式创建成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>这将为当前的游戏创建快捷方式。但在其更新后,快捷方式可能无法正常工作。是否继续?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>%1 的快捷方式创建失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>创建图标</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>无法创建图标文件。路径“ %1 ”不存在且无法被创建。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>打开 %1 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>选择目录</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>属性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>无法加载该游戏的属性信息。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>加载文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>打开提取的 ROM 目录</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>选择的目录无效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>安装文件</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>剩余 %n 个文件</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>正在安装文件 &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>安装结果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>最近安装了 %n 个文件
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n 个文件被覆盖
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n 个文件安装失败
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>系统应用</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>系统档案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>系统应用更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>固件包 (A型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>固件包 (B型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>游戏</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>游戏更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>游戏 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>差量程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>选择 NCA 安装类型...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>安装失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>选择的 NCA 程序类型无效。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>找不到文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>文件 &quot;%1&quot; 未找到</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>硬件不满足要求</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>您的系统不满足运行 yuzu 的推荐配置。兼容性报告已被禁用。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>未设置 yuzu 账户</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>打开 URL 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<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="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS 录制中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>覆盖玩家 1 的文件?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>检测到无效配置</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>当前的 Amiibo 已被移除。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>错误</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>当前游戏并没有在寻找 Amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 文件 (%1);; 全部文件 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>加载 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>加载 Amiibo 数据时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>选择的文件并不是有效的 amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>选择的文件已在使用中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>发生了未知错误</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5636,193 +5636,193 @@ Please, only use this feature to install updates and DLC.</source>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>无可用固件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>请安装固件以使用相册小程序。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>相册小程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>相册小程序不可用。请重新安装固件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>请安装固件以使用 Cabinet 小程序。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Cabinet 小程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>Cabinet 小程序不可用。请重新安装固件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>请安装固件以使用 Mii editor。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii Edit 小程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>Mii editor 不可用。请重新安装固件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>请安装固件以使用控制器菜单。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>控制器小程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>控制器菜单不可用。请重新安装固件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>捕获截图</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG 图像 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 状态:正在运行 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS 状态:正在录制 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 状态:空闲 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS 状态:无效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>停止运行 (&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>开始 (&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>停止录制 (&amp;E)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>录制 (&amp;E)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>正在编译 %n 个着色器文件</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>缩放比例: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>速度: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>速度: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>FPS: %1 (未锁定)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>FPS: %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>帧延迟: %1 毫秒</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>抗锯齿关</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>音量: 静音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>音量: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>确认重新生成密钥</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5838,37 +5838,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>项目丢失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- 丢失 BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - 丢失 BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- 丢失 PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>组件丢失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5877,49 +5877,49 @@ on your system&apos;s performance.</source>
您的系统性能。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>生成密钥</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>系统固件解密失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>当前密钥无法解密系统固件。&lt;br&gt;请查看&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 快速导航&lt;/a&gt;以获得你的密钥、固件和游戏。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>选择 RomFS 转储目标</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>请选择希望转储的 RomFS。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>您确定要关闭 yuzu 吗?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6432,11 +6432,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>开启/关闭静音</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6459,117 +6460,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>主窗口</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>调低音量</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>调高音量</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>捕获截图</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>更改窗口滤镜</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>更改主机运行模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>更改 GPU 精度</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>继续/暂停模拟</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>退出全屏</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>退出 yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>全屏</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>加载文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>加载/移除 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>重新启动模拟</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>停止模拟</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS 录制</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>重置 TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS 开始/停止</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>切换搜索栏</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>切换帧率限制</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>切换鼠标平移</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>切换到 Renderdoc 捕获截图</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>切换状态栏</translation>
</message>
@@ -8135,7 +8135,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8143,78 +8143,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>用户</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>创建用户</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>选择用户</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>修改用户图像</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>修改用户昵称</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>谁将获得黄金点数?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>谁正在使用任天堂 eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>是谁购买了这个?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>谁在发帖?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>选择要链接到任天堂账户的用户。</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>要更改哪个用户的设置?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>要为哪个用户格式化数据?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>哪个用户将被转移到另一个控制台?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>要为哪个用户发送保存数据?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>选择一个用户:</translation>
</message>
diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts
index d5f35dafa..3452ff6af 100644
--- a/dist/languages/zh_TW.ts
+++ b/dist/languages/zh_TW.ts
@@ -1898,8 +1898,8 @@ Compute pipelines are always enabled on all other drivers.</source>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="384"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reording of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;选中时,禁用映射内存上载的重新排序,从而允许将上载与特定绘图关联起来。在某些情况下可能会降低性能。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;选中时,禁用映射内存上载的重新排序,从而允许将上载与特定绘图关联起来。某些情况下可能会降低性能。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="387"/>
@@ -2315,33 +2315,33 @@ Compute pipelines are always enabled on all other drivers.</source>
<translation>背景顏色:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="272"/>
<source>%</source>
<comment>FSR sharpening percentage (e.g. 50%)</comment>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="372"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="412"/>
<source>Off</source>
<translation>關閉</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="413"/>
<source>VSync Off</source>
<translation>垂直同步關</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="375"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="415"/>
<source>Recommended</source>
<translation>推薦</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="378"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="418"/>
<source>On</source>
<translation>開啟</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="379"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="419"/>
<source>VSync On</source>
<translation>垂直同步開</translation>
</message>
@@ -4851,782 +4851,782 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>正在執行遊戲</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="856"/>
<source>Loading Web Applet...</source>
<translation>載入 Web 小程式..</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="907"/>
- <location filename="../../src/yuzu/main.cpp" line="910"/>
+ <location filename="../../src/yuzu/main.cpp" line="906"/>
+ <location filename="../../src/yuzu/main.cpp" line="909"/>
<source>Disable Web Applet</source>
<translation>停用 Web 小程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="911"/>
+ <location filename="../../src/yuzu/main.cpp" line="910"/>
<source>Disabling the web applet 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?
(This can be re-enabled in the Debug settings.)</source>
<translation>停用 Web 小程式可能會導致未定義的行為,且只能在《超級瑪利歐 3D收藏輯》中使用。您確定要停用 Web 小程式?
(您可以在偵錯設定中重新啟用它。)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1027"/>
+ <location filename="../../src/yuzu/main.cpp" line="1026"/>
<source>The amount of shaders currently being built</source>
<translation>目前正在建構的著色器數量</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1029"/>
+ <location filename="../../src/yuzu/main.cpp" line="1028"/>
<source>The current selected resolution scaling multiplier.</source>
<translation>目前選擇的解析度縮放比例。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1032"/>
+ <location filename="../../src/yuzu/main.cpp" line="1031"/>
<source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
<translation>目前的模擬速度。高於或低於 100% 表示比實際 Switch 執行速度更快或更慢。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1035"/>
+ <location filename="../../src/yuzu/main.cpp" line="1034"/>
<source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
<translation>遊戲即時 FPS。會因遊戲和場景的不同而改變。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1039"/>
+ <location filename="../../src/yuzu/main.cpp" line="1038"/>
<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>在不考慮幀數限制和垂直同步的情況下模擬一個 Switch 畫格的實際時間,若要全速模擬,此數值不得超過 16.67 毫秒。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Unmute</source>
<translation>取消靜音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1099"/>
+ <location filename="../../src/yuzu/main.cpp" line="1098"/>
<source>Mute</source>
<translation>靜音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1104"/>
+ <location filename="../../src/yuzu/main.cpp" line="1103"/>
<source>Reset Volume</source>
<translation>重設音量</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1291"/>
+ <location filename="../../src/yuzu/main.cpp" line="1290"/>
<source>&amp;Clear Recent Files</source>
<translation>清除最近的檔案(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1625"/>
+ <location filename="../../src/yuzu/main.cpp" line="1624"/>
<source>&amp;Continue</source>
<translation>繼續(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1627"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>&amp;Pause</source>
<translation>&amp;暫停</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1796"/>
<source>Warning Outdated Game Format</source>
<translation>過時遊戲格式警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
<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="1810"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1843"/>
<source>Error while loading ROM!</source>
<translation>載入 ROM 時發生錯誤!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1811"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>The ROM format is not supported.</source>
<translation>此 ROM 格式不支援</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1815"/>
+ <location filename="../../src/yuzu/main.cpp" line="1814"/>
<source>An error occurred initializing the video core.</source>
<translation>初始化視訊核心時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1816"/>
+ <location filename="../../src/yuzu/main.cpp" line="1815"/>
<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="1831"/>
+ <location filename="../../src/yuzu/main.cpp" line="1830"/>
<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="1834"/>
+ <location filename="../../src/yuzu/main.cpp" line="1833"/>
<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="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1844"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>發生未知錯誤,請檢視紀錄了解細節。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2030"/>
+ <location filename="../../src/yuzu/main.cpp" line="2029"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2031"/>
+ <location filename="../../src/yuzu/main.cpp" line="2030"/>
<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="2097"/>
+ <location filename="../../src/yuzu/main.cpp" line="2096"/>
<source>Closing software...</source>
<translation>正在關閉軟體…</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2260"/>
+ <location filename="../../src/yuzu/main.cpp" line="2259"/>
<source>Save Data</source>
<translation>儲存資料</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2316"/>
+ <location filename="../../src/yuzu/main.cpp" line="2315"/>
<source>Mod Data</source>
<translation>模組資料</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2328"/>
<source>Error Opening %1 Folder</source>
<translation>開啟資料夾 %1 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2330"/>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="3127"/>
<source>Folder does not exist!</source>
<translation>資料夾不存在</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2342"/>
+ <location filename="../../src/yuzu/main.cpp" line="2341"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>開啟通用著色器快取位置時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2343"/>
+ <location filename="../../src/yuzu/main.cpp" line="2342"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>無法新增此遊戲的著色器快取資料夾。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2416"/>
+ <location filename="../../src/yuzu/main.cpp" line="2415"/>
<source>Error Removing Contents</source>
<translation>移除內容時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2418"/>
+ <location filename="../../src/yuzu/main.cpp" line="2417"/>
<source>Error Removing Update</source>
<translation>移除更新時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2420"/>
+ <location filename="../../src/yuzu/main.cpp" line="2419"/>
<source>Error Removing DLC</source>
<translation>移除 DLC 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2429"/>
+ <location filename="../../src/yuzu/main.cpp" line="2428"/>
<source>Remove Installed Game Contents?</source>
<translation>移除已安裝的遊戲內容?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2430"/>
<source>Remove Installed Game Update?</source>
<translation>移除已安裝的遊戲更新?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2432"/>
<source>Remove Installed Game DLC?</source>
<translation>移除已安裝的遊戲 DLC?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2439"/>
+ <location filename="../../src/yuzu/main.cpp" line="2438"/>
<source>Remove Entry</source>
<translation>移除項目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2469"/>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
- <location filename="../../src/yuzu/main.cpp" line="2516"/>
- <location filename="../../src/yuzu/main.cpp" line="2595"/>
- <location filename="../../src/yuzu/main.cpp" line="2629"/>
- <location filename="../../src/yuzu/main.cpp" line="2652"/>
+ <location filename="../../src/yuzu/main.cpp" line="2468"/>
+ <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2515"/>
+ <location filename="../../src/yuzu/main.cpp" line="2594"/>
+ <location filename="../../src/yuzu/main.cpp" line="2628"/>
+ <location filename="../../src/yuzu/main.cpp" line="2651"/>
<source>Successfully Removed</source>
<translation>移除成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2470"/>
+ <location filename="../../src/yuzu/main.cpp" line="2469"/>
<source>Successfully removed the installed base game.</source>
<translation>成功移除已安裝的遊戲。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2474"/>
+ <location filename="../../src/yuzu/main.cpp" line="2473"/>
<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="2486"/>
+ <location filename="../../src/yuzu/main.cpp" line="2485"/>
<source>Successfully removed the installed update.</source>
<translation>成功移除已安裝的遊戲更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2489"/>
+ <location filename="../../src/yuzu/main.cpp" line="2488"/>
<source>There is no update installed for this title.</source>
<translation>此遊戲沒有已安裝的更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2512"/>
+ <location filename="../../src/yuzu/main.cpp" line="2511"/>
<source>There are no DLC installed for this title.</source>
<translation>此遊戲沒有已安裝的 DLC。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2517"/>
+ <location filename="../../src/yuzu/main.cpp" line="2516"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>成功移除遊戲 %1 已安裝的 DLC。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2525"/>
+ <location filename="../../src/yuzu/main.cpp" line="2524"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>刪除 OpenGL 模式的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2527"/>
+ <location filename="../../src/yuzu/main.cpp" line="2526"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>刪除 Vulkan 模式的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2529"/>
+ <location filename="../../src/yuzu/main.cpp" line="2528"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>刪除所有的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2531"/>
+ <location filename="../../src/yuzu/main.cpp" line="2530"/>
<source>Remove Custom Game Configuration?</source>
<translation>移除額外遊戲設定?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <location filename="../../src/yuzu/main.cpp" line="2532"/>
<source>Remove Cache Storage?</source>
<translation>移除快取儲存空間?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2539"/>
+ <location filename="../../src/yuzu/main.cpp" line="2538"/>
<source>Remove File</source>
<translation>刪除檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Remove Play Time Data</source>
<translation>清除遊玩時間</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2564"/>
+ <location filename="../../src/yuzu/main.cpp" line="2563"/>
<source>Reset play time?</source>
<translation>重設遊玩時間?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2590"/>
- <location filename="../../src/yuzu/main.cpp" line="2598"/>
+ <location filename="../../src/yuzu/main.cpp" line="2589"/>
+ <location filename="../../src/yuzu/main.cpp" line="2597"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>刪除通用著色器快取時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2591"/>
- <location filename="../../src/yuzu/main.cpp" line="2625"/>
+ <location filename="../../src/yuzu/main.cpp" line="2590"/>
+ <location filename="../../src/yuzu/main.cpp" line="2624"/>
<source>A shader cache for this title does not exist.</source>
<translation>此遊戲沒有著色器快取</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2596"/>
+ <location filename="../../src/yuzu/main.cpp" line="2595"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>成功刪除著色器快取。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2599"/>
+ <location filename="../../src/yuzu/main.cpp" line="2598"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>刪除通用著色器快取失敗。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2614"/>
+ <location filename="../../src/yuzu/main.cpp" line="2613"/>
<source>Error Removing Vulkan Driver Pipeline Cache</source>
<translation>移除 Vulkan 驅動程式管線快取時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2615"/>
+ <location filename="../../src/yuzu/main.cpp" line="2614"/>
<source>Failed to remove the driver pipeline cache.</source>
<translation>無法移除驅動程式管線快取。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2624"/>
- <location filename="../../src/yuzu/main.cpp" line="2632"/>
+ <location filename="../../src/yuzu/main.cpp" line="2623"/>
+ <location filename="../../src/yuzu/main.cpp" line="2631"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>刪除通用著色器快取時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2630"/>
+ <location filename="../../src/yuzu/main.cpp" line="2629"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>成功刪除通用著色器快取。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2633"/>
+ <location filename="../../src/yuzu/main.cpp" line="2632"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>無法刪除著色器快取資料夾。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2646"/>
- <location filename="../../src/yuzu/main.cpp" line="2655"/>
+ <location filename="../../src/yuzu/main.cpp" line="2645"/>
+ <location filename="../../src/yuzu/main.cpp" line="2654"/>
<source>Error Removing Custom Configuration</source>
<translation>移除額外遊戲設定時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2647"/>
+ <location filename="../../src/yuzu/main.cpp" line="2646"/>
<source>A custom configuration for this title does not exist.</source>
<translation>此遊戲沒有額外設定。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2653"/>
+ <location filename="../../src/yuzu/main.cpp" line="2652"/>
<source>Successfully removed the custom game configuration.</source>
<translation>成功移除額外遊戲設定。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2656"/>
+ <location filename="../../src/yuzu/main.cpp" line="2655"/>
<source>Failed to remove the custom game configuration.</source>
<translation>移除額外遊戲設定失敗。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2678"/>
- <location filename="../../src/yuzu/main.cpp" line="2766"/>
+ <location filename="../../src/yuzu/main.cpp" line="2677"/>
+ <location filename="../../src/yuzu/main.cpp" line="2760"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 抽取失敗!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2679"/>
+ <location filename="../../src/yuzu/main.cpp" line="2678"/>
<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="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Full</source>
<translation>全部</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2741"/>
+ <location filename="../../src/yuzu/main.cpp" line="2735"/>
<source>Skeleton</source>
<translation>部分</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2743"/>
+ <location filename="../../src/yuzu/main.cpp" line="2737"/>
<source>Select RomFS Dump Mode</source>
<translation>選擇RomFS傾印模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2744"/>
+ <location filename="../../src/yuzu/main.cpp" line="2738"/>
<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="2767"/>
+ <location filename="../../src/yuzu/main.cpp" line="2761"/>
<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="2774"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
<source>Extracting RomFS...</source>
<translation>抽取 RomFS 中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2774"/>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="3272"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2768"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="3266"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2784"/>
+ <location filename="../../src/yuzu/main.cpp" line="2778"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 抽取完成!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2785"/>
- <location filename="../../src/yuzu/main.cpp" line="2839"/>
- <location filename="../../src/yuzu/main.cpp" line="4311"/>
+ <location filename="../../src/yuzu/main.cpp" line="2779"/>
+ <location filename="../../src/yuzu/main.cpp" line="2833"/>
+ <location filename="../../src/yuzu/main.cpp" line="4305"/>
<source>The operation completed successfully.</source>
<translation>動作已成功完成</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2796"/>
+ <location filename="../../src/yuzu/main.cpp" line="2790"/>
<source>Integrity verification couldn&apos;t be performed!</source>
<translation>無法執行完整性驗證!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2797"/>
+ <location filename="../../src/yuzu/main.cpp" line="2791"/>
<source>File contents were not checked for validity.</source>
<translation>未檢查檔案內容的完整性。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2800"/>
- <location filename="../../src/yuzu/main.cpp" line="4307"/>
+ <location filename="../../src/yuzu/main.cpp" line="2794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4301"/>
<source>Integrity verification failed!</source>
<translation>完整性驗證失敗!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2801"/>
+ <location filename="../../src/yuzu/main.cpp" line="2795"/>
<source>File contents may be corrupt.</source>
<translation>檔案可能已經損毀。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2810"/>
- <location filename="../../src/yuzu/main.cpp" line="4219"/>
+ <location filename="../../src/yuzu/main.cpp" line="2804"/>
+ <location filename="../../src/yuzu/main.cpp" line="4213"/>
<source>Verifying integrity...</source>
<translation>正在驗證完整性...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2838"/>
- <location filename="../../src/yuzu/main.cpp" line="4310"/>
+ <location filename="../../src/yuzu/main.cpp" line="2832"/>
+ <location filename="../../src/yuzu/main.cpp" line="4304"/>
<source>Integrity verification succeeded!</source>
<translation>完整性驗證成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2967"/>
+ <location filename="../../src/yuzu/main.cpp" line="2961"/>
+ <location filename="../../src/yuzu/main.cpp" line="2965"/>
<location filename="../../src/yuzu/main.cpp" line="2971"/>
- <location filename="../../src/yuzu/main.cpp" line="2977"/>
- <location filename="../../src/yuzu/main.cpp" line="2984"/>
+ <location filename="../../src/yuzu/main.cpp" line="2978"/>
<source>Create Shortcut</source>
<translation>建立捷徑</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2968"/>
+ <location filename="../../src/yuzu/main.cpp" line="2962"/>
<source>Do you want to launch the game in fullscreen?</source>
<translation>您想以全屏模式启动游戏吗?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2972"/>
+ <location filename="../../src/yuzu/main.cpp" line="2966"/>
<source>Successfully created a shortcut to %1</source>
<translation>已成功在 %1 建立捷徑</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2978"/>
+ <location filename="../../src/yuzu/main.cpp" line="2972"/>
<source>This will create a shortcut to the current AppImage. This may not work well if you update. Continue?</source>
<translation>這將會為目前的應用程式映像建立捷徑,可能在其更新後無法運作,仍要繼續嗎?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2985"/>
+ <location filename="../../src/yuzu/main.cpp" line="2979"/>
<source>Failed to create a shortcut to %1</source>
<translation>为 %1 创建快捷方式时失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="2997"/>
<source>Create Icon</source>
<translation>建立圖示</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3004"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Cannot create icon file. Path &quot;%1&quot; does not exist and cannot be created.</source>
<translation>無法建立圖示檔案,路徑「%1」不存在且無法建立。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3132"/>
+ <location filename="../../src/yuzu/main.cpp" line="3126"/>
<source>Error Opening %1</source>
<translation>開啟 %1 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3141"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Select Directory</source>
<translation>選擇資料夾</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3170"/>
+ <location filename="../../src/yuzu/main.cpp" line="3164"/>
<source>Properties</source>
<translation>屬性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <location filename="../../src/yuzu/main.cpp" line="3165"/>
<source>The game properties could not be loaded.</source>
<translation>無法載入遊戲屬性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3182"/>
<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="3192"/>
+ <location filename="../../src/yuzu/main.cpp" line="3186"/>
<source>Load File</source>
<translation>開啟檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3205"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>Open Extracted ROM Directory</source>
<translation>開啟已抽取的 ROM 資料夾</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3216"/>
+ <location filename="../../src/yuzu/main.cpp" line="3210"/>
<source>Invalid Directory Selected</source>
<translation>選擇的資料夾無效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3217"/>
+ <location filename="../../src/yuzu/main.cpp" line="3211"/>
<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="3227"/>
+ <location filename="../../src/yuzu/main.cpp" line="3221"/>
<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="3232"/>
+ <location filename="../../src/yuzu/main.cpp" line="3226"/>
<source>Install Files</source>
<translation>安裝檔案</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3273"/>
<source>%n file(s) remaining</source>
<translation><numerusform>剩餘 %n 個檔案</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3275"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>正在安裝檔案「%1」...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3326"/>
- <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <location filename="../../src/yuzu/main.cpp" line="3320"/>
+ <location filename="../../src/yuzu/main.cpp" line="3334"/>
<source>Install Results</source>
<translation>安裝結果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <location filename="../../src/yuzu/main.cpp" line="3321"/>
<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="3333"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>最近安裝了 %n 個檔案
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3330"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n 個檔案被取代
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3338"/>
+ <location filename="../../src/yuzu/main.cpp" line="3332"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n 個檔案安裝失敗</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <location filename="../../src/yuzu/main.cpp" line="3431"/>
<source>System Application</source>
<translation>系統應用程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3432"/>
<source>System Archive</source>
<translation>系統檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3433"/>
<source>System Application Update</source>
<translation>系統應用程式更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3440"/>
+ <location filename="../../src/yuzu/main.cpp" line="3434"/>
<source>Firmware Package (Type A)</source>
<translation>韌體包(A型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3441"/>
+ <location filename="../../src/yuzu/main.cpp" line="3435"/>
<source>Firmware Package (Type B)</source>
<translation>韌體包(B型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3442"/>
+ <location filename="../../src/yuzu/main.cpp" line="3436"/>
<source>Game</source>
<translation>遊戲</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3443"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Game Update</source>
<translation>遊戲更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3444"/>
+ <location filename="../../src/yuzu/main.cpp" line="3438"/>
<source>Game DLC</source>
<translation>遊戲 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3445"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Delta Title</source>
<translation>Delta Title</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3448"/>
+ <location filename="../../src/yuzu/main.cpp" line="3442"/>
<source>Select NCA Install Type...</source>
<translation>選擇 NCA 安裝類型...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3449"/>
+ <location filename="../../src/yuzu/main.cpp" line="3443"/>
<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="3455"/>
+ <location filename="../../src/yuzu/main.cpp" line="3449"/>
<source>Failed to Install</source>
<translation>安裝失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3456"/>
+ <location filename="../../src/yuzu/main.cpp" line="3450"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>選擇的 NCA 安裝類型無效。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3491"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>File not found</source>
<translation>找不到檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3492"/>
+ <location filename="../../src/yuzu/main.cpp" line="3486"/>
<source>File &quot;%1&quot; not found</source>
<translation>找不到「%1」檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3609"/>
+ <location filename="../../src/yuzu/main.cpp" line="3603"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3635"/>
- <location filename="../../src/yuzu/main.cpp" line="3654"/>
+ <location filename="../../src/yuzu/main.cpp" line="3629"/>
+ <location filename="../../src/yuzu/main.cpp" line="3648"/>
<source>Hardware requirements not met</source>
<translation>硬體不符合需求</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3636"/>
- <location filename="../../src/yuzu/main.cpp" line="3655"/>
+ <location filename="../../src/yuzu/main.cpp" line="3630"/>
+ <location filename="../../src/yuzu/main.cpp" line="3649"/>
<source>Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled.</source>
<translation>您的系統不符合建議的硬體需求,相容性回報已停用。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3647"/>
+ <location filename="../../src/yuzu/main.cpp" line="3641"/>
<source>Missing yuzu Account</source>
<translation>未設定 yuzu 帳號</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3648"/>
+ <location filename="../../src/yuzu/main.cpp" line="3642"/>
<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="3663"/>
+ <location filename="../../src/yuzu/main.cpp" line="3657"/>
<source>Error opening URL</source>
<translation>開啟 URL 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3664"/>
+ <location filename="../../src/yuzu/main.cpp" line="3658"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>無法開啟 URL:「%1」。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>TAS Recording</source>
<translation>TAS 錄製</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3974"/>
+ <location filename="../../src/yuzu/main.cpp" line="3968"/>
<source>Overwrite file of player 1?</source>
<translation>覆寫玩家 1 的檔案?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3993"/>
+ <location filename="../../src/yuzu/main.cpp" line="3987"/>
<source>Invalid config detected</source>
<translation>偵測到無效設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3994"/>
+ <location filename="../../src/yuzu/main.cpp" line="3988"/>
<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="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>Amiibo</source>
<translation>Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4136"/>
- <location filename="../../src/yuzu/main.cpp" line="4186"/>
+ <location filename="../../src/yuzu/main.cpp" line="4130"/>
+ <location filename="../../src/yuzu/main.cpp" line="4180"/>
<source>The current amiibo has been removed</source>
<translation>目前 Amiibo 已被移除。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
<source>Error</source>
<translation>錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4141"/>
- <location filename="../../src/yuzu/main.cpp" line="4198"/>
+ <location filename="../../src/yuzu/main.cpp" line="4135"/>
+ <location filename="../../src/yuzu/main.cpp" line="4192"/>
<source>The current game is not looking for amiibos</source>
<translation>目前遊戲並未在尋找 Amiibos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4147"/>
+ <location filename="../../src/yuzu/main.cpp" line="4141"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 檔案 (%1);; 所有檔案 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4148"/>
+ <location filename="../../src/yuzu/main.cpp" line="4142"/>
<source>Load Amiibo</source>
<translation>開啟 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4182"/>
+ <location filename="../../src/yuzu/main.cpp" line="4176"/>
<source>Error loading Amiibo data</source>
<translation>載入 Amiibo 資料時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4192"/>
+ <location filename="../../src/yuzu/main.cpp" line="4186"/>
<source>The selected file is not a valid amiibo</source>
<translation>選取的檔案不是有效的 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4195"/>
+ <location filename="../../src/yuzu/main.cpp" line="4189"/>
<source>The selected file is already on use</source>
<translation>選取的檔案已在使用中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4201"/>
+ <location filename="../../src/yuzu/main.cpp" line="4195"/>
<source>An unknown error occurred</source>
<translation>發生了未知錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4308"/>
+ <location filename="../../src/yuzu/main.cpp" line="4302"/>
<source>Verification failed for the following files:
%1</source>
@@ -5635,193 +5635,193 @@ Please, only use this feature to install updates and DLC.</source>
%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4337"/>
- <location filename="../../src/yuzu/main.cpp" line="4360"/>
- <location filename="../../src/yuzu/main.cpp" line="4384"/>
- <location filename="../../src/yuzu/main.cpp" line="4408"/>
+ <location filename="../../src/yuzu/main.cpp" line="4331"/>
+ <location filename="../../src/yuzu/main.cpp" line="4354"/>
+ <location filename="../../src/yuzu/main.cpp" line="4378"/>
+ <location filename="../../src/yuzu/main.cpp" line="4402"/>
<source>No firmware available</source>
<translation>無可用韌體</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4338"/>
+ <location filename="../../src/yuzu/main.cpp" line="4332"/>
<source>Please install the firmware to use the Album applet.</source>
<translation>請安裝韌體以使用相簿小程式。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4344"/>
+ <location filename="../../src/yuzu/main.cpp" line="4338"/>
<source>Album Applet</source>
<translation>相簿小程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4345"/>
+ <location filename="../../src/yuzu/main.cpp" line="4339"/>
<source>Album applet is not available. Please reinstall firmware.</source>
<translation>無法使用相簿小程式。請安裝韌體。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4361"/>
+ <location filename="../../src/yuzu/main.cpp" line="4355"/>
<source>Please install the firmware to use the Cabinet applet.</source>
<translation>請安裝韌體以使用 Cabinet 小程式。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4367"/>
+ <location filename="../../src/yuzu/main.cpp" line="4361"/>
<source>Cabinet Applet</source>
<translation>Cabinet 小程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4368"/>
+ <location filename="../../src/yuzu/main.cpp" line="4362"/>
<source>Cabinet applet is not available. Please reinstall firmware.</source>
<translation>無法使用 Cabinet 小程式。請安裝韌體。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4385"/>
+ <location filename="../../src/yuzu/main.cpp" line="4379"/>
<source>Please install the firmware to use the Mii editor.</source>
<translation>請安裝韌體以使用 Mii 編輯器。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4391"/>
+ <location filename="../../src/yuzu/main.cpp" line="4385"/>
<source>Mii Edit Applet</source>
<translation>Mii 編輯器小程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4392"/>
+ <location filename="../../src/yuzu/main.cpp" line="4386"/>
<source>Mii editor is not available. Please reinstall firmware.</source>
<translation>Mii 編輯器無法使用。請安裝韌體。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4409"/>
+ <location filename="../../src/yuzu/main.cpp" line="4403"/>
<source>Please install the firmware to use the Controller Menu.</source>
<translation>请安装固件以使用控制器菜单。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4416"/>
+ <location filename="../../src/yuzu/main.cpp" line="4410"/>
<source>Controller Applet</source>
<translation>控制器設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4417"/>
+ <location filename="../../src/yuzu/main.cpp" line="4411"/>
<source>Controller Menu is not available. Please reinstall firmware.</source>
<translation>控制器菜单不可用。请重新安装固件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4450"/>
+ <location filename="../../src/yuzu/main.cpp" line="4444"/>
<source>Capture Screenshot</source>
<translation>截圖</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4451"/>
+ <location filename="../../src/yuzu/main.cpp" line="4445"/>
<source>PNG Image (*.png)</source>
<translation>PNG 圖片 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4534"/>
+ <location filename="../../src/yuzu/main.cpp" line="4528"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 狀態:正在執行 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4538"/>
+ <location filename="../../src/yuzu/main.cpp" line="4532"/>
<source>TAS state: Recording %1</source>
<translation>TAS 狀態:正在錄製 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4540"/>
+ <location filename="../../src/yuzu/main.cpp" line="4534"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 狀態:閒置 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4544"/>
+ <location filename="../../src/yuzu/main.cpp" line="4538"/>
<source>TAS State: Invalid</source>
<translation>TAS 狀態:無效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Stop Running</source>
<translation>&amp;停止執行</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4558"/>
+ <location filename="../../src/yuzu/main.cpp" line="4552"/>
<source>&amp;Start</source>
<translation>開始(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>Stop R&amp;ecording</source>
<translation>停止錄製</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4559"/>
+ <location filename="../../src/yuzu/main.cpp" line="4553"/>
<source>R&amp;ecord</source>
<translation>錄製 (&amp;E)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="4583"/>
+ <location filename="../../src/yuzu/main.cpp" line="4577"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>正在編譯 %n 個著色器檔案</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4592"/>
+ <location filename="../../src/yuzu/main.cpp" line="4586"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>縮放比例:%1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4595"/>
+ <location filename="../../src/yuzu/main.cpp" line="4589"/>
<source>Speed: %1% / %2%</source>
<translation>速度:%1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4599"/>
+ <location filename="../../src/yuzu/main.cpp" line="4593"/>
<source>Speed: %1%</source>
<translation>速度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4603"/>
+ <location filename="../../src/yuzu/main.cpp" line="4597"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>遊戲: %1 FPS(未限制)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4606"/>
+ <location filename="../../src/yuzu/main.cpp" line="4600"/>
<source>Game: %1 FPS</source>
<translation>遊戲:%1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4608"/>
+ <location filename="../../src/yuzu/main.cpp" line="4602"/>
<source>Frame: %1 ms</source>
<translation>畫格延遲:%1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4638"/>
+ <location filename="../../src/yuzu/main.cpp" line="4632"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4648"/>
+ <location filename="../../src/yuzu/main.cpp" line="4642"/>
<location filename="../../src/yuzu/configuration/shared_translation.h" line="42"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4656"/>
+ <location filename="../../src/yuzu/main.cpp" line="4650"/>
<source>NO AA</source>
<translation>抗鋸齒關</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4665"/>
+ <location filename="../../src/yuzu/main.cpp" line="4659"/>
<source>VOLUME: MUTE</source>
<translation>音量: 靜音</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4668"/>
+ <location filename="../../src/yuzu/main.cpp" line="4662"/>
<source>VOLUME: %1%</source>
<comment>Volume percentage (e.g. 50%)</comment>
<translation>音量:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4733"/>
+ <location filename="../../src/yuzu/main.cpp" line="4727"/>
<source>Confirm Key Rederivation</source>
<translation>確認重新產生金鑰</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4734"/>
+ <location filename="../../src/yuzu/main.cpp" line="4728"/>
<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.
@@ -5837,37 +5837,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="4768"/>
+ <location filename="../../src/yuzu/main.cpp" line="4762"/>
<source>Missing fuses</source>
<translation>遺失項目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4771"/>
+ <location filename="../../src/yuzu/main.cpp" line="4765"/>
<source> - Missing BOOT0</source>
<translation>- 遺失 BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4774"/>
+ <location filename="../../src/yuzu/main.cpp" line="4768"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - 遺失 BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4777"/>
+ <location filename="../../src/yuzu/main.cpp" line="4771"/>
<source> - Missing PRODINFO</source>
<translation>- 遺失 PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4782"/>
+ <location filename="../../src/yuzu/main.cpp" line="4776"/>
<source>Derivation Components Missing</source>
<translation>遺失產生元件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4783"/>
+ <location filename="../../src/yuzu/main.cpp" line="4777"/>
<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="4792"/>
+ <location filename="../../src/yuzu/main.cpp" line="4786"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -5876,49 +5876,49 @@ on your system&apos;s performance.</source>
您的系統效能。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4794"/>
+ <location filename="../../src/yuzu/main.cpp" line="4788"/>
<source>Deriving Keys</source>
<translation>產生金鑰</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4811"/>
+ <location filename="../../src/yuzu/main.cpp" line="4805"/>
<source>System Archive Decryption Failed</source>
<translation>系統封存解密失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4812"/>
+ <location filename="../../src/yuzu/main.cpp" line="4806"/>
<source>Encryption keys failed to decrypt firmware. &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.</source>
<translation>加密金鑰無法解密韌體。&lt;br&gt;請依循&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 快速開始指南&lt;/a&gt;以取得您的金鑰、韌體和遊戲。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4929"/>
+ <location filename="../../src/yuzu/main.cpp" line="4923"/>
<source>Select RomFS Dump Target</source>
<translation>選擇 RomFS 傾印目標</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4930"/>
+ <location filename="../../src/yuzu/main.cpp" line="4924"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>請選擇希望傾印的 RomFS。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4953"/>
+ <location filename="../../src/yuzu/main.cpp" line="4947"/>
<source>Are you sure you want to close yuzu?</source>
<translation>您確定要關閉 yuzu 嗎?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="4954"/>
- <location filename="../../src/yuzu/main.cpp" line="5034"/>
- <location filename="../../src/yuzu/main.cpp" line="5046"/>
+ <location filename="../../src/yuzu/main.cpp" line="4948"/>
+ <location filename="../../src/yuzu/main.cpp" line="5028"/>
+ <location filename="../../src/yuzu/main.cpp" line="5040"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="5035"/>
+ <location filename="../../src/yuzu/main.cpp" line="5029"/>
<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="5043"/>
+ <location filename="../../src/yuzu/main.cpp" line="5037"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -6431,11 +6431,12 @@ Debug Message: </source>
<context>
<name>Hotkeys</name>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="227"/>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<source>Audio Mute/Unmute</source>
<translation>靜音/取消靜音</translation>
</message>
<message>
+ <location filename="../../src/yuzu/uisettings.h" line="226"/>
<location filename="../../src/yuzu/uisettings.h" line="227"/>
<location filename="../../src/yuzu/uisettings.h" line="228"/>
<location filename="../../src/yuzu/uisettings.h" line="229"/>
@@ -6458,117 +6459,116 @@ Debug Message: </source>
<location filename="../../src/yuzu/uisettings.h" line="246"/>
<location filename="../../src/yuzu/uisettings.h" line="247"/>
<location filename="../../src/yuzu/uisettings.h" line="248"/>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
<source>Main Window</source>
<translation>主要視窗</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="228"/>
+ <location filename="../../src/yuzu/uisettings.h" line="227"/>
<source>Audio Volume Down</source>
<translation>音訊音量降低</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="229"/>
+ <location filename="../../src/yuzu/uisettings.h" line="228"/>
<source>Audio Volume Up</source>
<translation>音訊音量提高</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="230"/>
+ <location filename="../../src/yuzu/uisettings.h" line="229"/>
<source>Capture Screenshot</source>
<translation>截圖</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="231"/>
+ <location filename="../../src/yuzu/uisettings.h" line="230"/>
<source>Change Adapting Filter</source>
<translation>變更自適性過濾器</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="232"/>
+ <location filename="../../src/yuzu/uisettings.h" line="231"/>
<source>Change Docked Mode</source>
<translation>變更底座模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="233"/>
+ <location filename="../../src/yuzu/uisettings.h" line="232"/>
<source>Change GPU Accuracy</source>
<translation>變更 GPU 精確度</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="234"/>
+ <location filename="../../src/yuzu/uisettings.h" line="233"/>
<source>Continue/Pause Emulation</source>
<translation>繼續/暫停模擬</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="235"/>
+ <location filename="../../src/yuzu/uisettings.h" line="234"/>
<source>Exit Fullscreen</source>
<translation>離開全螢幕</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="236"/>
+ <location filename="../../src/yuzu/uisettings.h" line="235"/>
<source>Exit yuzu</source>
<translation>離開 yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="237"/>
+ <location filename="../../src/yuzu/uisettings.h" line="236"/>
<source>Fullscreen</source>
<translation>全螢幕</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="238"/>
+ <location filename="../../src/yuzu/uisettings.h" line="237"/>
<source>Load File</source>
<translation>開啟檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="239"/>
+ <location filename="../../src/yuzu/uisettings.h" line="238"/>
<source>Load/Remove Amiibo</source>
<translation>載入/移除 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="240"/>
+ <location filename="../../src/yuzu/uisettings.h" line="239"/>
<source>Restart Emulation</source>
<translation>重新啟動模擬</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="241"/>
+ <location filename="../../src/yuzu/uisettings.h" line="240"/>
<source>Stop Emulation</source>
<translation>停止模擬</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="242"/>
+ <location filename="../../src/yuzu/uisettings.h" line="241"/>
<source>TAS Record</source>
<translation>TAS 錄製</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="243"/>
+ <location filename="../../src/yuzu/uisettings.h" line="242"/>
<source>TAS Reset</source>
<translation>TAS 重設</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="244"/>
+ <location filename="../../src/yuzu/uisettings.h" line="243"/>
<source>TAS Start/Stop</source>
<translation>TAS 開始/停止</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="245"/>
+ <location filename="../../src/yuzu/uisettings.h" line="244"/>
<source>Toggle Filter Bar</source>
<translation>切換搜尋列</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="246"/>
+ <location filename="../../src/yuzu/uisettings.h" line="245"/>
<source>Toggle Framerate Limit</source>
<translation>切換影格速率限制</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="247"/>
+ <location filename="../../src/yuzu/uisettings.h" line="246"/>
<source>Toggle Mouse Panning</source>
<translation>切換滑鼠移動</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="248"/>
+ <location filename="../../src/yuzu/uisettings.h" line="247"/>
<source>Toggle Renderdoc Capture</source>
<translation>切換到 Renderdoc 截圖</translation>
</message>
<message>
- <location filename="../../src/yuzu/uisettings.h" line="249"/>
+ <location filename="../../src/yuzu/uisettings.h" line="248"/>
<source>Toggle Status Bar</source>
<translation>切換狀態列</translation>
</message>
@@ -8133,7 +8133,7 @@ Please try again or contact the developer of the software.</source>
<context>
<name>QtProfileSelectionDialog</name>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="25"/>
<source>%1
%2</source>
<comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
@@ -8141,78 +8141,78 @@ Please try again or contact the developer of the software.</source>
%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="85"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="87"/>
<source>Users</source>
<translation>使用者</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="167"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="169"/>
<source>Profile Creator</source>
<translation>创建用户</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="170"/>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="188"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="172"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="190"/>
<source>Profile Selector</source>
<translation>設定檔選擇</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="173"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="175"/>
<source>Profile Icon Editor</source>
<translation>修改用户图像</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="176"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="178"/>
<source>Profile Nickname Editor</source>
<translation>修改用户昵称</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="198"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="200"/>
<source>Who will receive the points?</source>
<translation>谁将获得黄金点数?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="201"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="203"/>
<source>Who is using Nintendo eShop?</source>
<translation>谁正在使用任天堂 eShop?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="204"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="206"/>
<source>Who is making this purchase?</source>
<translation>是谁购买了这个?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="207"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="209"/>
<source>Who is posting?</source>
<translation>谁在发帖?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="210"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="212"/>
<source>Select a user to link to a Nintendo Account.</source>
<translation>选择要链接到任天堂账户的用户。</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="213"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="215"/>
<source>Change settings for which user?</source>
<translation>要修改哪個玩家的設定?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="216"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="218"/>
<source>Format data for which user?</source>
<translation>要为哪个用户格式化数据?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="219"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="221"/>
<source>Which user will be transferred to another console?</source>
<translation>哪个用户将被转移到另一个控制台?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="222"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="224"/>
<source>Send save data for which user?</source>
<translation>要为哪个用户发送保存数据?</translation>
</message>
<message>
- <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="226"/>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="228"/>
<source>Select a user:</source>
<translation>選擇一位使用者:</translation>
</message>
diff --git a/externals/Vulkan-Headers b/externals/Vulkan-Headers
-Subproject df60f0316899460eeaaefa06d2dd7e4e300c160
+Subproject 80207f9da86423ce33aff8328a792fd715f3c08
diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts
index f763c657e..53aafa08c 100644
--- a/src/android/app/build.gradle.kts
+++ b/src/android/app/build.gradle.kts
@@ -10,7 +10,7 @@ plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-parcelize")
- kotlin("plugin.serialization") version "1.8.21"
+ kotlin("plugin.serialization") version "1.9.20"
id("androidx.navigation.safeargs.kotlin")
id("org.jlleitschuh.gradle.ktlint") version "11.4.0"
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
index 9b08f008d..93c8ce922 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
@@ -49,6 +49,7 @@ import org.yuzu.yuzu_emu.utils.ForegroundService
import org.yuzu.yuzu_emu.utils.InputHandler
import org.yuzu.yuzu_emu.utils.Log
import org.yuzu.yuzu_emu.utils.MemoryUtil
+import org.yuzu.yuzu_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.NfcReader
import org.yuzu.yuzu_emu.utils.ThemeHelper
import java.text.NumberFormat
@@ -170,6 +171,11 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
stopMotionSensorListener()
}
+ override fun onStop() {
+ super.onStop()
+ NativeConfig.saveGlobalConfig()
+ }
+
override fun onUserLeaveHint() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
if (BooleanSetting.PICTURE_IN_PICTURE.getBoolean() && !isInPictureInPictureMode) {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
index 16f06cd0a..86bd33672 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt
@@ -18,7 +18,14 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
RENDERER_DEBUG("debug"),
PICTURE_IN_PICTURE("picture_in_picture"),
- USE_CUSTOM_RTC("custom_rtc_enabled");
+ USE_CUSTOM_RTC("custom_rtc_enabled"),
+ BLACK_BACKGROUNDS("black_backgrounds"),
+ JOYSTICK_REL_CENTER("joystick_rel_center"),
+ DPAD_SLIDE("dpad_slide"),
+ HAPTIC_FEEDBACK("haptic_feedback"),
+ SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"),
+ SHOW_INPUT_OVERLAY("show_input_overlay"),
+ TOUCHSCREEN("touchscreen");
override fun getBoolean(needsGlobal: Boolean): Boolean =
NativeConfig.getBoolean(key, needsGlobal)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
index 21e4e1afd..16fb87614 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
@@ -18,7 +18,12 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
RENDERER_ANTI_ALIASING("anti_aliasing"),
RENDERER_SCREEN_LAYOUT("screen_layout"),
RENDERER_ASPECT_RATIO("aspect_ratio"),
- AUDIO_OUTPUT_ENGINE("output_engine");
+ AUDIO_OUTPUT_ENGINE("output_engine"),
+ MAX_ANISOTROPY("max_anisotropy"),
+ THEME("theme"),
+ THEME_MODE("theme_mode"),
+ OVERLAY_SCALE("control_scale"),
+ OVERLAY_OPACITY("control_opacity");
override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
index 9551fc05e..fee80bb21 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.kt
@@ -15,18 +15,10 @@ object Settings {
SECTION_DEBUG(R.string.preferences_debug);
}
+ const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown"
- const val PREF_OVERLAY_VERSION = "OverlayVersion"
- const val PREF_LANDSCAPE_OVERLAY_VERSION = "LandscapeOverlayVersion"
- const val PREF_PORTRAIT_OVERLAY_VERSION = "PortraitOverlayVersion"
- const val PREF_FOLDABLE_OVERLAY_VERSION = "FoldableOverlayVersion"
- val overlayLayoutPrefs = listOf(
- PREF_LANDSCAPE_OVERLAY_VERSION,
- PREF_PORTRAIT_OVERLAY_VERSION,
- PREF_FOLDABLE_OVERLAY_VERSION
- )
-
+ // Deprecated input overlay preference keys
const val PREF_CONTROL_SCALE = "controlScale"
const val PREF_CONTROL_OPACITY = "controlOpacity"
const val PREF_TOUCH_ENABLED = "isTouchEnabled"
@@ -47,23 +39,12 @@ object Settings {
const val PREF_BUTTON_STICK_R = "buttonToggle14"
const val PREF_BUTTON_HOME = "buttonToggle15"
const val PREF_BUTTON_SCREENSHOT = "buttonToggle16"
-
const val PREF_MENU_SETTINGS_JOYSTICK_REL_CENTER = "EmulationMenuSettings_JoystickRelCenter"
const val PREF_MENU_SETTINGS_DPAD_SLIDE = "EmulationMenuSettings_DpadSlideEnable"
const val PREF_MENU_SETTINGS_HAPTICS = "EmulationMenuSettings_Haptics"
const val PREF_MENU_SETTINGS_SHOW_FPS = "EmulationMenuSettings_ShowFps"
const val PREF_MENU_SETTINGS_SHOW_OVERLAY = "EmulationMenuSettings_ShowOverlay"
-
- const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
- const val PREF_THEME = "Theme"
- const val PREF_THEME_MODE = "ThemeMode"
- const val PREF_BLACK_BACKGROUNDS = "BlackBackgrounds"
-
val overlayPreferences = listOf(
- PREF_OVERLAY_VERSION,
- PREF_CONTROL_SCALE,
- PREF_CONTROL_OPACITY,
- PREF_TOUCH_ENABLED,
PREF_BUTTON_A,
PREF_BUTTON_B,
PREF_BUTTON_X,
@@ -83,7 +64,33 @@ object Settings {
PREF_BUTTON_STICK_R
)
- const val LayoutOption_Unspecified = 0
- const val LayoutOption_MobilePortrait = 4
- const val LayoutOption_MobileLandscape = 5
+ // Deprecated layout preference keys
+ const val PREF_LANDSCAPE_SUFFIX = "_Landscape"
+ const val PREF_PORTRAIT_SUFFIX = "_Portrait"
+ const val PREF_FOLDABLE_SUFFIX = "_Foldable"
+ val overlayLayoutSuffixes = listOf(
+ PREF_LANDSCAPE_SUFFIX,
+ PREF_PORTRAIT_SUFFIX,
+ PREF_FOLDABLE_SUFFIX
+ )
+
+ // Deprecated theme preference keys
+ const val PREF_THEME = "Theme"
+ const val PREF_THEME_MODE = "ThemeMode"
+ const val PREF_BLACK_BACKGROUNDS = "BlackBackgrounds"
+
+ enum class EmulationOrientation(val int: Int) {
+ Unspecified(0),
+ SensorLandscape(5),
+ Landscape(1),
+ ReverseLandscape(2),
+ SensorPortrait(6),
+ Portrait(4),
+ ReversePortrait(3);
+
+ companion object {
+ fun from(int: Int): EmulationOrientation =
+ entries.firstOrNull { it.int == int } ?: Unspecified
+ }
+ }
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
index 2e97aee2c..12f7aa1ab 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@@ -245,6 +245,15 @@ abstract class SettingsItem(
)
put(
SingleChoiceSetting(
+ IntSetting.MAX_ANISOTROPY,
+ R.string.anisotropic_filtering,
+ R.string.anisotropic_filtering_description,
+ R.array.anisoEntries,
+ R.array.anisoValues
+ )
+ )
+ put(
+ SingleChoiceSetting(
IntSetting.AUDIO_OUTPUT_ENGINE,
R.string.audio_output_engine,
0,
@@ -298,6 +307,7 @@ abstract class SettingsItem(
override val key: String = FASTMEM_COMBINED
override val isRuntimeModifiable: Boolean = false
+ override val pairedSettingKey = BooleanSetting.CPU_DEBUG_MODE.key
override val defaultValue: Boolean = true
override val isSwitchable: Boolean = true
override var global: Boolean
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index a7e965589..2ad2f4966 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -3,10 +3,8 @@
package org.yuzu.yuzu_emu.features.settings.ui
-import android.content.SharedPreferences
import android.os.Build
import android.widget.Toast
-import androidx.preference.PreferenceManager
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.YuzuApplication
@@ -29,9 +27,6 @@ class SettingsFragmentPresenter(
) {
private var settingsList = ArrayList<SettingsItem>()
- private val preferences: SharedPreferences
- get() = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
// Extension for altering settings list based on each setting's properties
fun ArrayList<SettingsItem>.add(key: String) {
val item = SettingsItem.settingsItems[key]!!
@@ -149,6 +144,7 @@ class SettingsFragmentPresenter(
add(IntSetting.RENDERER_VSYNC.key)
add(IntSetting.RENDERER_SCALING_FILTER.key)
add(IntSetting.RENDERER_ANTI_ALIASING.key)
+ add(IntSetting.MAX_ANISOTROPY.key)
add(IntSetting.RENDERER_SCREEN_LAYOUT.key)
add(IntSetting.RENDERER_ASPECT_RATIO.key)
add(BooleanSetting.PICTURE_IN_PICTURE.key)
@@ -169,25 +165,19 @@ class SettingsFragmentPresenter(
private fun addThemeSettings(sl: ArrayList<SettingsItem>) {
sl.apply {
val theme: AbstractIntSetting = object : AbstractIntSetting {
- override fun getInt(needsGlobal: Boolean): Int =
- preferences.getInt(Settings.PREF_THEME, 0)
-
+ override fun getInt(needsGlobal: Boolean): Int = IntSetting.THEME.getInt()
override fun setInt(value: Int) {
- preferences.edit()
- .putInt(Settings.PREF_THEME, value)
- .apply()
+ IntSetting.THEME.setInt(value)
settingsViewModel.setShouldRecreate(true)
}
- override val key: String = Settings.PREF_THEME
- override val isRuntimeModifiable: Boolean = false
- override fun getValueAsString(needsGlobal: Boolean): String = getInt().toString()
- override val defaultValue: Int = 0
- override fun reset() {
- preferences.edit()
- .putInt(Settings.PREF_THEME, defaultValue)
- .apply()
- }
+ override val key: String = IntSetting.THEME.key
+ override val isRuntimeModifiable: Boolean = IntSetting.THEME.isRuntimeModifiable
+ override fun getValueAsString(needsGlobal: Boolean): String =
+ IntSetting.THEME.getValueAsString()
+
+ override val defaultValue: Int = IntSetting.THEME.defaultValue
+ override fun reset() = IntSetting.THEME.setInt(defaultValue)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
@@ -213,24 +203,22 @@ class SettingsFragmentPresenter(
}
val themeMode: AbstractIntSetting = object : AbstractIntSetting {
- override fun getInt(needsGlobal: Boolean): Int =
- preferences.getInt(Settings.PREF_THEME_MODE, -1)
-
+ override fun getInt(needsGlobal: Boolean): Int = IntSetting.THEME_MODE.getInt()
override fun setInt(value: Int) {
- preferences.edit()
- .putInt(Settings.PREF_THEME_MODE, value)
- .apply()
+ IntSetting.THEME_MODE.setInt(value)
settingsViewModel.setShouldRecreate(true)
}
- override val key: String = Settings.PREF_THEME_MODE
- override val isRuntimeModifiable: Boolean = false
- override fun getValueAsString(needsGlobal: Boolean): String = getInt().toString()
- override val defaultValue: Int = -1
+ override val key: String = IntSetting.THEME_MODE.key
+ override val isRuntimeModifiable: Boolean =
+ IntSetting.THEME_MODE.isRuntimeModifiable
+
+ override fun getValueAsString(needsGlobal: Boolean): String =
+ IntSetting.THEME_MODE.getValueAsString()
+
+ override val defaultValue: Int = IntSetting.THEME_MODE.defaultValue
override fun reset() {
- preferences.edit()
- .putInt(Settings.PREF_BLACK_BACKGROUNDS, defaultValue)
- .apply()
+ IntSetting.THEME_MODE.setInt(defaultValue)
settingsViewModel.setShouldRecreate(true)
}
}
@@ -247,25 +235,24 @@ class SettingsFragmentPresenter(
val blackBackgrounds: AbstractBooleanSetting = object : AbstractBooleanSetting {
override fun getBoolean(needsGlobal: Boolean): Boolean =
- preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false)
+ BooleanSetting.BLACK_BACKGROUNDS.getBoolean()
override fun setBoolean(value: Boolean) {
- preferences.edit()
- .putBoolean(Settings.PREF_BLACK_BACKGROUNDS, value)
- .apply()
+ BooleanSetting.BLACK_BACKGROUNDS.setBoolean(value)
settingsViewModel.setShouldRecreate(true)
}
- override val key: String = Settings.PREF_BLACK_BACKGROUNDS
- override val isRuntimeModifiable: Boolean = false
+ override val key: String = BooleanSetting.BLACK_BACKGROUNDS.key
+ override val isRuntimeModifiable: Boolean =
+ BooleanSetting.BLACK_BACKGROUNDS.isRuntimeModifiable
+
override fun getValueAsString(needsGlobal: Boolean): String =
- getBoolean().toString()
+ BooleanSetting.BLACK_BACKGROUNDS.getValueAsString()
- override val defaultValue: Boolean = false
+ override val defaultValue: Boolean = BooleanSetting.BLACK_BACKGROUNDS.defaultValue
override fun reset() {
- preferences.edit()
- .putBoolean(Settings.PREF_BLACK_BACKGROUNDS, defaultValue)
- .apply()
+ BooleanSetting.BLACK_BACKGROUNDS
+ .setBoolean(BooleanSetting.BLACK_BACKGROUNDS.defaultValue)
settingsViewModel.setShouldRecreate(true)
}
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
index 0dce8ad8d..816336820 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
@@ -149,7 +149,7 @@ class AddonsFragment : Fragment() {
}
val isValid = externalAddonDirectory.listFiles()
- .any { AddonUtil.validAddonDirectories.contains(it.name) }
+ .any { AddonUtil.validAddonDirectories.contains(it.name?.lowercase()) }
val errorMessage = MessageDialogFragment.newInstance(
requireActivity(),
titleId = R.string.invalid_directory,
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
index d7b38f62d..9efc1705d 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt
@@ -7,7 +7,6 @@ import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.Context
import android.content.DialogInterface
-import android.content.SharedPreferences
import android.content.pm.ActivityInfo
import android.content.res.Configuration
import android.net.Uri
@@ -33,7 +32,6 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
-import androidx.preference.PreferenceManager
import androidx.window.layout.FoldingFeature
import androidx.window.layout.WindowInfoTracker
import androidx.window.layout.WindowLayoutInfo
@@ -46,22 +44,23 @@ import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
-import org.yuzu.yuzu_emu.YuzuApplication
import org.yuzu.yuzu_emu.activities.EmulationActivity
import org.yuzu.yuzu_emu.databinding.DialogOverlayAdjustBinding
import org.yuzu.yuzu_emu.databinding.FragmentEmulationBinding
+import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
import org.yuzu.yuzu_emu.features.settings.model.Settings
+import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationOrientation
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
import org.yuzu.yuzu_emu.model.DriverViewModel
import org.yuzu.yuzu_emu.model.Game
import org.yuzu.yuzu_emu.model.EmulationViewModel
-import org.yuzu.yuzu_emu.overlay.InputOverlay
+import org.yuzu.yuzu_emu.overlay.model.OverlayControl
+import org.yuzu.yuzu_emu.overlay.model.OverlayLayout
import org.yuzu.yuzu_emu.utils.*
import java.lang.NullPointerException
class EmulationFragment : Fragment(), SurfaceHolder.Callback {
- private lateinit var preferences: SharedPreferences
private lateinit var emulationState: EmulationState
private var emulationActivity: EmulationActivity? = null
private var perfStatsUpdater: (() -> Unit)? = null
@@ -101,6 +100,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
*/
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ updateOrientation()
val intentUri: Uri? = requireActivity().intent.data
var intentGame: Game? = null
@@ -141,7 +141,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
// So this fragment doesn't restart on configuration changes; i.e. rotation.
retainInstance = true
- preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
emulationState = EmulationState(game.path)
}
@@ -382,24 +381,25 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
updateScreenLayout()
+ val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()
if (emulationActivity?.isInPictureInPictureMode == true) {
if (binding.drawerLayout.isOpen) {
binding.drawerLayout.close()
}
- if (EmulationMenuSettings.showOverlay) {
+ if (showInputOverlay) {
binding.surfaceInputOverlay.visibility = View.INVISIBLE
}
} else {
- if (EmulationMenuSettings.showOverlay && emulationViewModel.emulationStarted.value) {
+ if (showInputOverlay && emulationViewModel.emulationStarted.value) {
binding.surfaceInputOverlay.visibility = View.VISIBLE
} else {
binding.surfaceInputOverlay.visibility = View.INVISIBLE
}
if (!isInFoldableLayout) {
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
- binding.surfaceInputOverlay.layout = InputOverlay.PORTRAIT
+ binding.surfaceInputOverlay.layout = OverlayLayout.Portrait
} else {
- binding.surfaceInputOverlay.layout = InputOverlay.LANDSCAPE
+ binding.surfaceInputOverlay.layout = OverlayLayout.Landscape
}
}
}
@@ -423,17 +423,15 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
private fun resetInputOverlay() {
- preferences.edit()
- .remove(Settings.PREF_CONTROL_SCALE)
- .remove(Settings.PREF_CONTROL_OPACITY)
- .apply()
+ IntSetting.OVERLAY_SCALE.reset()
+ IntSetting.OVERLAY_OPACITY.reset()
binding.surfaceInputOverlay.post {
binding.surfaceInputOverlay.resetLayoutVisibilityAndPlacement()
}
}
private fun updateShowFpsOverlay() {
- if (EmulationMenuSettings.showFps) {
+ if (BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()) {
val SYSTEM_FPS = 0
val FPS = 1
val FRAMETIME = 2
@@ -462,13 +460,23 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
@SuppressLint("SourceLockedOrientationActivity")
private fun updateOrientation() {
emulationActivity?.let {
- it.requestedOrientation = when (IntSetting.RENDERER_SCREEN_LAYOUT.getInt()) {
- Settings.LayoutOption_MobileLandscape ->
+ val orientationSetting =
+ EmulationOrientation.from(IntSetting.RENDERER_SCREEN_LAYOUT.getInt())
+ it.requestedOrientation = when (orientationSetting) {
+ EmulationOrientation.Unspecified -> ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
+ EmulationOrientation.SensorLandscape ->
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
- Settings.LayoutOption_MobilePortrait ->
- ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT
- Settings.LayoutOption_Unspecified -> ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
- else -> ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
+
+ EmulationOrientation.Landscape -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
+ EmulationOrientation.ReverseLandscape ->
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
+
+ EmulationOrientation.SensorPortrait ->
+ ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
+
+ EmulationOrientation.Portrait -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+ EmulationOrientation.ReversePortrait ->
+ ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
}
}
}
@@ -496,7 +504,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.inGameMenu.layoutParams.height = it.bounds.bottom
isInFoldableLayout = true
- binding.surfaceInputOverlay.layout = InputOverlay.FOLDABLE
+ binding.surfaceInputOverlay.layout = OverlayLayout.Foldable
}
}
it.isSeparating
@@ -535,18 +543,22 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
popup.menuInflater.inflate(R.menu.menu_overlay_options, popup.menu)
popup.menu.apply {
- findItem(R.id.menu_toggle_fps).isChecked = EmulationMenuSettings.showFps
- findItem(R.id.menu_rel_stick_center).isChecked = EmulationMenuSettings.joystickRelCenter
- findItem(R.id.menu_dpad_slide).isChecked = EmulationMenuSettings.dpadSlide
- findItem(R.id.menu_show_overlay).isChecked = EmulationMenuSettings.showOverlay
- findItem(R.id.menu_haptics).isChecked = EmulationMenuSettings.hapticFeedback
+ findItem(R.id.menu_toggle_fps).isChecked =
+ BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()
+ findItem(R.id.menu_rel_stick_center).isChecked =
+ BooleanSetting.JOYSTICK_REL_CENTER.getBoolean()
+ findItem(R.id.menu_dpad_slide).isChecked = BooleanSetting.DPAD_SLIDE.getBoolean()
+ findItem(R.id.menu_show_overlay).isChecked =
+ BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()
+ findItem(R.id.menu_haptics).isChecked = BooleanSetting.HAPTIC_FEEDBACK.getBoolean()
+ findItem(R.id.menu_touchscreen).isChecked = BooleanSetting.TOUCHSCREEN.getBoolean()
}
popup.setOnMenuItemClickListener {
when (it.itemId) {
R.id.menu_toggle_fps -> {
it.isChecked = !it.isChecked
- EmulationMenuSettings.showFps = it.isChecked
+ BooleanSetting.SHOW_PERFORMANCE_OVERLAY.setBoolean(it.isChecked)
updateShowFpsOverlay()
true
}
@@ -564,11 +576,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
R.id.menu_toggle_controls -> {
- val preferences =
- PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
- val optionsArray = BooleanArray(Settings.overlayPreferences.size)
- Settings.overlayPreferences.forEachIndexed { i, _ ->
- optionsArray[i] = preferences.getBoolean("buttonToggle$i", i < 15)
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ val optionsArray = BooleanArray(overlayControlData.size)
+ overlayControlData.forEachIndexed { i, _ ->
+ optionsArray[i] = overlayControlData.firstOrNull { data ->
+ OverlayControl.entries[i].id == data.id
+ }?.enabled == true
}
val dialog = MaterialAlertDialogBuilder(requireContext())
@@ -577,11 +590,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
R.array.gamepadButtons,
optionsArray
) { _, indexSelected, isChecked ->
- preferences.edit()
- .putBoolean("buttonToggle$indexSelected", isChecked)
- .apply()
+ overlayControlData.firstOrNull { data ->
+ OverlayControl.entries[indexSelected].id == data.id
+ }?.enabled = isChecked
}
.setPositiveButton(android.R.string.ok) { _, _ ->
+ NativeConfig.setOverlayControlData(overlayControlData)
+ NativeConfig.saveGlobalConfig()
binding.surfaceInputOverlay.refreshControls()
}
.setNegativeButton(android.R.string.cancel, null)
@@ -592,12 +607,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
dialog.getButton(AlertDialog.BUTTON_NEUTRAL)
.setOnClickListener {
val isChecked = !optionsArray[0]
- Settings.overlayPreferences.forEachIndexed { i, _ ->
+ overlayControlData.forEachIndexed { i, _ ->
optionsArray[i] = isChecked
dialog.listView.setItemChecked(i, isChecked)
- preferences.edit()
- .putBoolean("buttonToggle$i", isChecked)
- .apply()
+ overlayControlData[i].enabled = isChecked
}
}
true
@@ -605,26 +618,32 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
R.id.menu_show_overlay -> {
it.isChecked = !it.isChecked
- EmulationMenuSettings.showOverlay = it.isChecked
+ BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(it.isChecked)
binding.surfaceInputOverlay.refreshControls()
true
}
R.id.menu_rel_stick_center -> {
it.isChecked = !it.isChecked
- EmulationMenuSettings.joystickRelCenter = it.isChecked
+ BooleanSetting.JOYSTICK_REL_CENTER.setBoolean(it.isChecked)
true
}
R.id.menu_dpad_slide -> {
it.isChecked = !it.isChecked
- EmulationMenuSettings.dpadSlide = it.isChecked
+ BooleanSetting.DPAD_SLIDE.setBoolean(it.isChecked)
true
}
R.id.menu_haptics -> {
it.isChecked = !it.isChecked
- EmulationMenuSettings.hapticFeedback = it.isChecked
+ BooleanSetting.HAPTIC_FEEDBACK.setBoolean(it.isChecked)
+ true
+ }
+
+ R.id.menu_touchscreen -> {
+ it.isChecked = !it.isChecked
+ BooleanSetting.TOUCHSCREEN.setBoolean(it.isChecked)
true
}
@@ -644,7 +663,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
@SuppressLint("SourceLockedOrientationActivity")
private fun startConfiguringControls() {
// Lock the current orientation to prevent editing inconsistencies
- if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == Settings.LayoutOption_Unspecified) {
+ if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) {
emulationActivity?.let {
it.requestedOrientation =
if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
@@ -662,11 +681,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.doneControlConfig.visibility = View.GONE
binding.surfaceInputOverlay.setIsInEditMode(false)
// Unlock the orientation if it was locked for editing
- if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == Settings.LayoutOption_Unspecified) {
+ if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) {
emulationActivity?.let {
it.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
}
}
+ NativeConfig.saveGlobalConfig()
}
@SuppressLint("SetTextI18n")
@@ -675,7 +695,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
adjustBinding.apply {
inputScaleSlider.apply {
valueTo = 150F
- value = preferences.getInt(Settings.PREF_CONTROL_SCALE, 50).toFloat()
+ value = IntSetting.OVERLAY_SCALE.getInt().toFloat()
addOnChangeListener(
Slider.OnChangeListener { _, value, _ ->
inputScaleValue.text = "${value.toInt()}%"
@@ -685,7 +705,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
inputOpacitySlider.apply {
valueTo = 100F
- value = preferences.getInt(Settings.PREF_CONTROL_OPACITY, 100).toFloat()
+ value = IntSetting.OVERLAY_OPACITY.getInt().toFloat()
addOnChangeListener(
Slider.OnChangeListener { _, value, _ ->
inputOpacityValue.text = "${value.toInt()}%"
@@ -709,16 +729,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
private fun setControlScale(scale: Int) {
- preferences.edit()
- .putInt(Settings.PREF_CONTROL_SCALE, scale)
- .apply()
+ IntSetting.OVERLAY_SCALE.setInt(scale)
binding.surfaceInputOverlay.refreshControls()
}
private fun setControlOpacity(opacity: Int) {
- preferences.edit()
- .putInt(Settings.PREF_CONTROL_OPACITY, opacity)
- .apply()
+ IntSetting.OVERLAY_OPACITY.setInt(opacity)
binding.surfaceInputOverlay.refreshControls()
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt
index b1d3c0040..b04d1208f 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt
@@ -445,7 +445,8 @@ class GamePropertiesFragment : Fragment() {
val zipResult = FileUtil.zipFromInternalStorage(
File(saveLocation),
saveLocation.replaceAfterLast("/", ""),
- BufferedOutputStream(requireContext().contentResolver.openOutputStream(result))
+ BufferedOutputStream(requireContext().contentResolver.openOutputStream(result)),
+ compression = false
)
return@newInstance when (zipResult) {
TaskState.Completed -> getString(R.string.export_success)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt
index d19f20dc2..5ae05b5cc 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GamesViewModel.kt
@@ -167,13 +167,14 @@ class GamesViewModel : ViewModel() {
}
}
- fun onCloseGameFoldersFragment() =
+ fun onCloseGameFoldersFragment() {
+ NativeConfig.saveGlobalConfig()
viewModelScope.launch {
withContext(Dispatchers.IO) {
- NativeConfig.saveGlobalConfig()
getGameDirs(true)
}
}
+ }
private fun getGameDirs(reloadList: Boolean = false) {
val gameDirs = NativeConfig.getGameDirs()
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
index a13faf3c7..c87486c90 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.kt
@@ -21,7 +21,6 @@ import android.view.View
import android.view.View.OnTouchListener
import android.view.WindowInsets
import androidx.core.content.ContextCompat
-import androidx.preference.PreferenceManager
import androidx.window.layout.WindowMetricsCalculator
import kotlin.math.max
import kotlin.math.min
@@ -29,9 +28,12 @@ import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.NativeLibrary.ButtonType
import org.yuzu.yuzu_emu.NativeLibrary.StickType
import org.yuzu.yuzu_emu.R
-import org.yuzu.yuzu_emu.YuzuApplication
-import org.yuzu.yuzu_emu.features.settings.model.Settings
-import org.yuzu.yuzu_emu.utils.EmulationMenuSettings
+import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
+import org.yuzu.yuzu_emu.features.settings.model.IntSetting
+import org.yuzu.yuzu_emu.overlay.model.OverlayControl
+import org.yuzu.yuzu_emu.overlay.model.OverlayControlData
+import org.yuzu.yuzu_emu.overlay.model.OverlayLayout
+import org.yuzu.yuzu_emu.utils.NativeConfig
/**
* Draws the interactive input overlay on top of the
@@ -51,23 +53,18 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
private lateinit var windowInsets: WindowInsets
- var layout = LANDSCAPE
+ var layout = OverlayLayout.Landscape
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
super.onLayout(changed, left, top, right, bottom)
windowInsets = rootWindowInsets
- val overlayVersion = preferences.getInt(Settings.PREF_OVERLAY_VERSION, 0)
- if (overlayVersion != OVERLAY_VERSION) {
- resetAllLayouts()
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ if (overlayControlData.isEmpty()) {
+ populateDefaultConfig()
} else {
- val layoutIndex = overlayLayouts.indexOf(layout)
- val currentLayoutVersion =
- preferences.getInt(Settings.overlayLayoutPrefs[layoutIndex], 0)
- if (currentLayoutVersion != overlayLayoutVersions[layoutIndex]) {
- resetCurrentLayout()
- }
+ checkForNewControls(overlayControlData)
}
// Load the controls.
@@ -123,7 +120,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
}
for (dpad in overlayDpads) {
- if (!dpad.updateStatus(event, EmulationMenuSettings.dpadSlide)) {
+ if (!dpad.updateStatus(event, BooleanSetting.DPAD_SLIDE.getBoolean())) {
continue
}
NativeLibrary.onGamePadButtonEvent(
@@ -174,7 +171,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
invalidate()
}
- if (!preferences.getBoolean(Settings.PREF_TOUCH_ENABLED, true)) {
+ if (!BooleanSetting.TOUCHSCREEN.getBoolean()) {
return true
}
@@ -211,7 +208,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
}
private fun playHaptics(event: MotionEvent) {
- if (EmulationMenuSettings.hapticFeedback) {
+ if (BooleanSetting.HAPTIC_FEEDBACK.getBoolean()) {
when (event.actionMasked) {
MotionEvent.ACTION_DOWN,
MotionEvent.ACTION_POINTER_DOWN ->
@@ -255,10 +252,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
MotionEvent.ACTION_POINTER_DOWN ->
// If no button is being moved now, remember the currently touched button to move.
if (buttonBeingConfigured == null &&
- button.bounds.contains(
- fingerPositionX,
- fingerPositionY
- )
+ button.bounds.contains(fingerPositionX, fingerPositionY)
) {
buttonBeingConfigured = button
buttonBeingConfigured!!.onConfigureTouch(event)
@@ -274,7 +268,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
MotionEvent.ACTION_POINTER_UP -> if (buttonBeingConfigured === button) {
// Persist button position by saving new place.
saveControlPosition(
- buttonBeingConfigured!!.prefId,
+ buttonBeingConfigured!!.overlayControlData.id,
buttonBeingConfigured!!.bounds.centerX(),
buttonBeingConfigured!!.bounds.centerY(),
layout
@@ -307,7 +301,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
MotionEvent.ACTION_POINTER_UP -> if (dpadBeingConfigured === dpad) {
// Persist button position by saving new place.
saveControlPosition(
- Settings.PREF_BUTTON_DPAD,
+ OverlayControl.COMBINED_DPAD.id,
dpadBeingConfigured!!.bounds.centerX(),
dpadBeingConfigured!!.bounds.centerY(),
layout
@@ -321,10 +315,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
when (event.action) {
MotionEvent.ACTION_DOWN,
MotionEvent.ACTION_POINTER_DOWN -> if (joystickBeingConfigured == null &&
- joystick.bounds.contains(
- fingerPositionX,
- fingerPositionY
- )
+ joystick.bounds.contains(fingerPositionX, fingerPositionY)
) {
joystickBeingConfigured = joystick
joystickBeingConfigured!!.onConfigureTouch(event)
@@ -351,231 +342,257 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
return true
}
- private fun addOverlayControls(layout: String) {
+ private fun addOverlayControls(layout: OverlayLayout) {
val windowSize = getSafeScreenSize(context, Pair(measuredWidth, measuredHeight))
- if (preferences.getBoolean(Settings.PREF_BUTTON_A, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_a,
- R.drawable.facebutton_a_depressed,
- ButtonType.BUTTON_A,
- Settings.PREF_BUTTON_A,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_B, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_b,
- R.drawable.facebutton_b_depressed,
- ButtonType.BUTTON_B,
- Settings.PREF_BUTTON_B,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_X, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_x,
- R.drawable.facebutton_x_depressed,
- ButtonType.BUTTON_X,
- Settings.PREF_BUTTON_X,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_Y, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_y,
- R.drawable.facebutton_y_depressed,
- ButtonType.BUTTON_Y,
- Settings.PREF_BUTTON_Y,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_L, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.l_shoulder,
- R.drawable.l_shoulder_depressed,
- ButtonType.TRIGGER_L,
- Settings.PREF_BUTTON_L,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_R, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.r_shoulder,
- R.drawable.r_shoulder_depressed,
- ButtonType.TRIGGER_R,
- Settings.PREF_BUTTON_R,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_ZL, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.zl_trigger,
- R.drawable.zl_trigger_depressed,
- ButtonType.TRIGGER_ZL,
- Settings.PREF_BUTTON_ZL,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_ZR, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.zr_trigger,
- R.drawable.zr_trigger_depressed,
- ButtonType.TRIGGER_ZR,
- Settings.PREF_BUTTON_ZR,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_PLUS, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_plus,
- R.drawable.facebutton_plus_depressed,
- ButtonType.BUTTON_PLUS,
- Settings.PREF_BUTTON_PLUS,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_MINUS, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_minus,
- R.drawable.facebutton_minus_depressed,
- ButtonType.BUTTON_MINUS,
- Settings.PREF_BUTTON_MINUS,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_DPAD, true)) {
- overlayDpads.add(
- initializeOverlayDpad(
- context,
- windowSize,
- R.drawable.dpad_standard,
- R.drawable.dpad_standard_cardinal_depressed,
- R.drawable.dpad_standard_diagonal_depressed,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_STICK_L, true)) {
- overlayJoysticks.add(
- initializeOverlayJoystick(
- context,
- windowSize,
- R.drawable.joystick_range,
- R.drawable.joystick,
- R.drawable.joystick_depressed,
- StickType.STICK_L,
- ButtonType.STICK_L,
- Settings.PREF_STICK_L,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_STICK_R, true)) {
- overlayJoysticks.add(
- initializeOverlayJoystick(
- context,
- windowSize,
- R.drawable.joystick_range,
- R.drawable.joystick,
- R.drawable.joystick_depressed,
- StickType.STICK_R,
- ButtonType.STICK_R,
- Settings.PREF_STICK_R,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_HOME, false)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_home,
- R.drawable.facebutton_home_depressed,
- ButtonType.BUTTON_HOME,
- Settings.PREF_BUTTON_HOME,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_SCREENSHOT, false)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.facebutton_screenshot,
- R.drawable.facebutton_screenshot_depressed,
- ButtonType.BUTTON_CAPTURE,
- Settings.PREF_BUTTON_SCREENSHOT,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_STICK_L, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.button_l3,
- R.drawable.button_l3_depressed,
- ButtonType.STICK_L,
- Settings.PREF_BUTTON_STICK_L,
- layout
- )
- )
- }
- if (preferences.getBoolean(Settings.PREF_BUTTON_STICK_R, true)) {
- overlayButtons.add(
- initializeOverlayButton(
- context,
- windowSize,
- R.drawable.button_r3,
- R.drawable.button_r3_depressed,
- ButtonType.STICK_R,
- Settings.PREF_BUTTON_STICK_R,
- layout
- )
- )
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ for (data in overlayControlData) {
+ if (!data.enabled) {
+ continue
+ }
+
+ val position = data.positionFromLayout(layout)
+ when (data.id) {
+ OverlayControl.BUTTON_A.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_a,
+ R.drawable.facebutton_a_depressed,
+ ButtonType.BUTTON_A,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_B.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_b,
+ R.drawable.facebutton_b_depressed,
+ ButtonType.BUTTON_B,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_X.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_x,
+ R.drawable.facebutton_x_depressed,
+ ButtonType.BUTTON_X,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_Y.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_y,
+ R.drawable.facebutton_y_depressed,
+ ButtonType.BUTTON_Y,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_PLUS.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_plus,
+ R.drawable.facebutton_plus_depressed,
+ ButtonType.BUTTON_PLUS,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_MINUS.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_minus,
+ R.drawable.facebutton_minus_depressed,
+ ButtonType.BUTTON_MINUS,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_HOME.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_home,
+ R.drawable.facebutton_home_depressed,
+ ButtonType.BUTTON_HOME,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_CAPTURE.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.facebutton_screenshot,
+ R.drawable.facebutton_screenshot_depressed,
+ ButtonType.BUTTON_CAPTURE,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_L.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.l_shoulder,
+ R.drawable.l_shoulder_depressed,
+ ButtonType.TRIGGER_L,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_R.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.r_shoulder,
+ R.drawable.r_shoulder_depressed,
+ ButtonType.TRIGGER_R,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_ZL.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.zl_trigger,
+ R.drawable.zl_trigger_depressed,
+ ButtonType.TRIGGER_ZL,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_ZR.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.zr_trigger,
+ R.drawable.zr_trigger_depressed,
+ ButtonType.TRIGGER_ZR,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_STICK_L.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.button_l3,
+ R.drawable.button_l3_depressed,
+ ButtonType.STICK_L,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.BUTTON_STICK_R.id -> {
+ overlayButtons.add(
+ initializeOverlayButton(
+ context,
+ windowSize,
+ R.drawable.button_r3,
+ R.drawable.button_r3_depressed,
+ ButtonType.STICK_R,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.STICK_L.id -> {
+ overlayJoysticks.add(
+ initializeOverlayJoystick(
+ context,
+ windowSize,
+ R.drawable.joystick_range,
+ R.drawable.joystick,
+ R.drawable.joystick_depressed,
+ StickType.STICK_L,
+ ButtonType.STICK_L,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.STICK_R.id -> {
+ overlayJoysticks.add(
+ initializeOverlayJoystick(
+ context,
+ windowSize,
+ R.drawable.joystick_range,
+ R.drawable.joystick,
+ R.drawable.joystick_depressed,
+ StickType.STICK_R,
+ ButtonType.STICK_R,
+ data,
+ position
+ )
+ )
+ }
+
+ OverlayControl.COMBINED_DPAD.id -> {
+ overlayDpads.add(
+ initializeOverlayDpad(
+ context,
+ windowSize,
+ R.drawable.dpad_standard,
+ R.drawable.dpad_standard_cardinal_depressed,
+ R.drawable.dpad_standard_diagonal_depressed,
+ position
+ )
+ )
+ }
+ }
}
}
@@ -586,313 +603,87 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
overlayJoysticks.clear()
// Add all the enabled overlay items back to the HashSet.
- if (EmulationMenuSettings.showOverlay) {
+ if (BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) {
addOverlayControls(layout)
}
invalidate()
}
- private fun saveControlPosition(prefId: String, x: Int, y: Int, layout: String) {
+ private fun saveControlPosition(id: String, x: Int, y: Int, layout: OverlayLayout) {
val windowSize = getSafeScreenSize(context, Pair(measuredWidth, measuredHeight))
val min = windowSize.first
val max = windowSize.second
- PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext).edit()
- .putFloat("$prefId-X$layout", (x - min.x).toFloat() / max.x)
- .putFloat("$prefId-Y$layout", (y - min.y).toFloat() / max.y)
- .apply()
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ val data = overlayControlData.firstOrNull { it.id == id }
+ val newPosition = Pair((x - min.x).toDouble() / max.x, (y - min.y).toDouble() / max.y)
+ when (layout) {
+ OverlayLayout.Landscape -> data?.landscapePosition = newPosition
+ OverlayLayout.Portrait -> data?.portraitPosition = newPosition
+ OverlayLayout.Foldable -> data?.foldablePosition = newPosition
+ }
+ NativeConfig.setOverlayControlData(overlayControlData)
}
fun setIsInEditMode(editMode: Boolean) {
inEditMode = editMode
}
- private fun resetCurrentLayout() {
- defaultOverlayByLayout(layout)
- val layoutIndex = overlayLayouts.indexOf(layout)
- preferences.edit()
- .putInt(Settings.overlayLayoutPrefs[layoutIndex], overlayLayoutVersions[layoutIndex])
- .apply()
+ /**
+ * Applies and saves all default values for the overlay
+ */
+ private fun populateDefaultConfig() {
+ val newConfig = OverlayControl.entries.map { it.toOverlayControlData() }
+ NativeConfig.setOverlayControlData(newConfig.toTypedArray())
+ NativeConfig.saveGlobalConfig()
}
- private fun resetAllLayouts() {
- val editor = preferences.edit()
- overlayLayouts.forEachIndexed { i, layout ->
- defaultOverlayByLayout(layout)
- editor.putInt(Settings.overlayLayoutPrefs[i], overlayLayoutVersions[i])
+ /**
+ * Checks if any new controls were added to OverlayControl that do not exist within deserialized
+ * config and adds / saves them if necessary
+ *
+ * @param overlayControlData Overlay control data from [NativeConfig.getOverlayControlData]
+ */
+ private fun checkForNewControls(overlayControlData: Array<OverlayControlData>) {
+ val missingControls = mutableListOf<OverlayControlData>()
+ OverlayControl.entries.forEach { defaultControl ->
+ val controlData = overlayControlData.firstOrNull { it.id == defaultControl.id }
+ if (controlData == null) {
+ missingControls.add(defaultControl.toOverlayControlData())
+ }
+ }
+
+ if (missingControls.isNotEmpty()) {
+ NativeConfig.setOverlayControlData(
+ arrayOf(*overlayControlData, *(missingControls.toTypedArray()))
+ )
+ NativeConfig.saveGlobalConfig()
}
- editor.putInt(Settings.PREF_OVERLAY_VERSION, OVERLAY_VERSION)
- editor.apply()
}
fun resetLayoutVisibilityAndPlacement() {
- defaultOverlayByLayout(layout)
- val editor = preferences.edit()
- Settings.overlayPreferences.forEachIndexed { _, pref ->
- editor.remove(pref)
+ defaultOverlayPositionByLayout(layout)
+
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ overlayControlData.forEach {
+ it.enabled = OverlayControl.from(it.id)?.defaultVisibility == false
}
- editor.apply()
+ NativeConfig.setOverlayControlData(overlayControlData)
+
refreshControls()
}
- private val landscapeResources = arrayOf(
- R.integer.SWITCH_BUTTON_A_X,
- R.integer.SWITCH_BUTTON_A_Y,
- R.integer.SWITCH_BUTTON_B_X,
- R.integer.SWITCH_BUTTON_B_Y,
- R.integer.SWITCH_BUTTON_X_X,
- R.integer.SWITCH_BUTTON_X_Y,
- R.integer.SWITCH_BUTTON_Y_X,
- R.integer.SWITCH_BUTTON_Y_Y,
- R.integer.SWITCH_TRIGGER_ZL_X,
- R.integer.SWITCH_TRIGGER_ZL_Y,
- R.integer.SWITCH_TRIGGER_ZR_X,
- R.integer.SWITCH_TRIGGER_ZR_Y,
- R.integer.SWITCH_BUTTON_DPAD_X,
- R.integer.SWITCH_BUTTON_DPAD_Y,
- R.integer.SWITCH_TRIGGER_L_X,
- R.integer.SWITCH_TRIGGER_L_Y,
- R.integer.SWITCH_TRIGGER_R_X,
- R.integer.SWITCH_TRIGGER_R_Y,
- R.integer.SWITCH_BUTTON_PLUS_X,
- R.integer.SWITCH_BUTTON_PLUS_Y,
- R.integer.SWITCH_BUTTON_MINUS_X,
- R.integer.SWITCH_BUTTON_MINUS_Y,
- R.integer.SWITCH_BUTTON_HOME_X,
- R.integer.SWITCH_BUTTON_HOME_Y,
- R.integer.SWITCH_BUTTON_CAPTURE_X,
- R.integer.SWITCH_BUTTON_CAPTURE_Y,
- R.integer.SWITCH_STICK_R_X,
- R.integer.SWITCH_STICK_R_Y,
- R.integer.SWITCH_STICK_L_X,
- R.integer.SWITCH_STICK_L_Y,
- R.integer.SWITCH_BUTTON_STICK_L_X,
- R.integer.SWITCH_BUTTON_STICK_L_Y,
- R.integer.SWITCH_BUTTON_STICK_R_X,
- R.integer.SWITCH_BUTTON_STICK_R_Y
- )
-
- private val portraitResources = arrayOf(
- R.integer.SWITCH_BUTTON_A_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_A_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_B_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_B_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_X_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_X_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_Y_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_Y_Y_PORTRAIT,
- R.integer.SWITCH_TRIGGER_ZL_X_PORTRAIT,
- R.integer.SWITCH_TRIGGER_ZL_Y_PORTRAIT,
- R.integer.SWITCH_TRIGGER_ZR_X_PORTRAIT,
- R.integer.SWITCH_TRIGGER_ZR_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_DPAD_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_DPAD_Y_PORTRAIT,
- R.integer.SWITCH_TRIGGER_L_X_PORTRAIT,
- R.integer.SWITCH_TRIGGER_L_Y_PORTRAIT,
- R.integer.SWITCH_TRIGGER_R_X_PORTRAIT,
- R.integer.SWITCH_TRIGGER_R_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_PLUS_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_PLUS_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_MINUS_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_MINUS_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_HOME_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_HOME_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_CAPTURE_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_CAPTURE_Y_PORTRAIT,
- R.integer.SWITCH_STICK_R_X_PORTRAIT,
- R.integer.SWITCH_STICK_R_Y_PORTRAIT,
- R.integer.SWITCH_STICK_L_X_PORTRAIT,
- R.integer.SWITCH_STICK_L_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_STICK_L_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_STICK_L_Y_PORTRAIT,
- R.integer.SWITCH_BUTTON_STICK_R_X_PORTRAIT,
- R.integer.SWITCH_BUTTON_STICK_R_Y_PORTRAIT
- )
-
- private val foldableResources = arrayOf(
- R.integer.SWITCH_BUTTON_A_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_A_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_B_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_B_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_X_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_X_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_Y_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_Y_Y_FOLDABLE,
- R.integer.SWITCH_TRIGGER_ZL_X_FOLDABLE,
- R.integer.SWITCH_TRIGGER_ZL_Y_FOLDABLE,
- R.integer.SWITCH_TRIGGER_ZR_X_FOLDABLE,
- R.integer.SWITCH_TRIGGER_ZR_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_DPAD_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_DPAD_Y_FOLDABLE,
- R.integer.SWITCH_TRIGGER_L_X_FOLDABLE,
- R.integer.SWITCH_TRIGGER_L_Y_FOLDABLE,
- R.integer.SWITCH_TRIGGER_R_X_FOLDABLE,
- R.integer.SWITCH_TRIGGER_R_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_PLUS_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_PLUS_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_MINUS_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_MINUS_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_HOME_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_HOME_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_CAPTURE_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_CAPTURE_Y_FOLDABLE,
- R.integer.SWITCH_STICK_R_X_FOLDABLE,
- R.integer.SWITCH_STICK_R_Y_FOLDABLE,
- R.integer.SWITCH_STICK_L_X_FOLDABLE,
- R.integer.SWITCH_STICK_L_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_STICK_L_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_STICK_L_Y_FOLDABLE,
- R.integer.SWITCH_BUTTON_STICK_R_X_FOLDABLE,
- R.integer.SWITCH_BUTTON_STICK_R_Y_FOLDABLE
- )
-
- private fun getResourceValue(layout: String, position: Int): Float {
- return when (layout) {
- PORTRAIT -> resources.getInteger(portraitResources[position]).toFloat() / 1000
- FOLDABLE -> resources.getInteger(foldableResources[position]).toFloat() / 1000
- else -> resources.getInteger(landscapeResources[position]).toFloat() / 1000
+ private fun defaultOverlayPositionByLayout(layout: OverlayLayout) {
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ for (data in overlayControlData) {
+ val defaultControlData = OverlayControl.from(data.id) ?: continue
+ val position = defaultControlData.getDefaultPositionForLayout(layout)
+ when (layout) {
+ OverlayLayout.Landscape -> data.landscapePosition = position
+ OverlayLayout.Portrait -> data.portraitPosition = position
+ OverlayLayout.Foldable -> data.foldablePosition = position
+ }
}
- }
-
- private fun defaultOverlayByLayout(layout: String) {
- // Each value represents the position of the button in relation to the screen size without insets.
- preferences.edit()
- .putFloat(
- "${Settings.PREF_BUTTON_A}-X$layout",
- getResourceValue(layout, 0)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_A}-Y$layout",
- getResourceValue(layout, 1)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_B}-X$layout",
- getResourceValue(layout, 2)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_B}-Y$layout",
- getResourceValue(layout, 3)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_X}-X$layout",
- getResourceValue(layout, 4)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_X}-Y$layout",
- getResourceValue(layout, 5)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_Y}-X$layout",
- getResourceValue(layout, 6)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_Y}-Y$layout",
- getResourceValue(layout, 7)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_ZL}-X$layout",
- getResourceValue(layout, 8)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_ZL}-Y$layout",
- getResourceValue(layout, 9)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_ZR}-X$layout",
- getResourceValue(layout, 10)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_ZR}-Y$layout",
- getResourceValue(layout, 11)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_DPAD}-X$layout",
- getResourceValue(layout, 12)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_DPAD}-Y$layout",
- getResourceValue(layout, 13)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_L}-X$layout",
- getResourceValue(layout, 14)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_L}-Y$layout",
- getResourceValue(layout, 15)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_R}-X$layout",
- getResourceValue(layout, 16)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_R}-Y$layout",
- getResourceValue(layout, 17)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_PLUS}-X$layout",
- getResourceValue(layout, 18)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_PLUS}-Y$layout",
- getResourceValue(layout, 19)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_MINUS}-X$layout",
- getResourceValue(layout, 20)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_MINUS}-Y$layout",
- getResourceValue(layout, 21)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_HOME}-X$layout",
- getResourceValue(layout, 22)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_HOME}-Y$layout",
- getResourceValue(layout, 23)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_SCREENSHOT}-X$layout",
- getResourceValue(layout, 24)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_SCREENSHOT}-Y$layout",
- getResourceValue(layout, 25)
- )
- .putFloat(
- "${Settings.PREF_STICK_R}-X$layout",
- getResourceValue(layout, 26)
- )
- .putFloat(
- "${Settings.PREF_STICK_R}-Y$layout",
- getResourceValue(layout, 27)
- )
- .putFloat(
- "${Settings.PREF_STICK_L}-X$layout",
- getResourceValue(layout, 28)
- )
- .putFloat(
- "${Settings.PREF_STICK_L}-Y$layout",
- getResourceValue(layout, 29)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_STICK_L}-X$layout",
- getResourceValue(layout, 30)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_STICK_L}-Y$layout",
- getResourceValue(layout, 31)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_STICK_R}-X$layout",
- getResourceValue(layout, 32)
- )
- .putFloat(
- "${Settings.PREF_BUTTON_STICK_R}-Y$layout",
- getResourceValue(layout, 33)
- )
- .apply()
+ NativeConfig.setOverlayControlData(overlayControlData)
}
override fun isInEditMode(): Boolean {
@@ -913,18 +704,6 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
FOLDABLE_OVERLAY_VERSION
)
- private val preferences: SharedPreferences =
- PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
- const val LANDSCAPE = "_Landscape"
- const val PORTRAIT = "_Portrait"
- const val FOLDABLE = "_Foldable"
- val overlayLayouts = listOf(
- LANDSCAPE,
- PORTRAIT,
- FOLDABLE
- )
-
/**
* Resizes a [Bitmap] by a given scale factor
*
@@ -1036,29 +815,19 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
* In the input overlay configuration menu,
* once a touch event begins and then ends (ie. Organizing the buttons to one's own liking for the overlay).
* the X and Y coordinates of the button at the END of its touch event
- * (when you remove your finger/stylus from the touchscreen) are then stored
- * within a SharedPreferences instance so that those values can be retrieved here.
- *
- *
- * This has a few benefits over the conventional way of storing the values
- * (ie. within the yuzu ini file).
- *
- * * No native calls
- * * Keeps Android-only values inside the Android environment
- *
- *
+ * (when you remove your finger/stylus from the touchscreen) are then stored in a native .
*
* Technically no modifications should need to be performed on the returned
* InputOverlayDrawableButton. Simply add it to the HashSet of overlay items and wait
* for Android to call the onDraw method.
*
- * @param context The current [Context].
- * @param windowSize The size of the window to draw the overlay on.
- * @param defaultResId The resource ID of the [Drawable] to get the [Bitmap] of (Default State).
- * @param pressedResId The resource ID of the [Drawable] to get the [Bitmap] of (Pressed State).
- * @param buttonId Identifier for determining what type of button the initialized InputOverlayDrawableButton represents.
- * @param prefId Identifier for determining where a button appears on screen.
- * @param layout The current screen layout as determined by [LANDSCAPE], [PORTRAIT], or [FOLDABLE].
+ * @param context The current [Context].
+ * @param windowSize The size of the window to draw the overlay on.
+ * @param defaultResId The resource ID of the [Drawable] to get the [Bitmap] of (Default State).
+ * @param pressedResId The resource ID of the [Drawable] to get the [Bitmap] of (Pressed State).
+ * @param buttonId Identifier for determining what type of button the initialized InputOverlayDrawableButton represents.
+ * @param overlayControlData Identifier for determining where a button appears on screen.
+ * @param position The position on screen as represented by an x and y value between 0 and 1.
* @return An [InputOverlayDrawableButton] with the correct drawing bounds set.
*/
private fun initializeOverlayButton(
@@ -1067,33 +836,30 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
defaultResId: Int,
pressedResId: Int,
buttonId: Int,
- prefId: String,
- layout: String
+ overlayControlData: OverlayControlData,
+ position: Pair<Double, Double>
): InputOverlayDrawableButton {
// Resources handle for fetching the initial Drawable resource.
val res = context.resources
- // SharedPreference to retrieve the X and Y coordinates for the InputOverlayDrawableButton.
- val sPrefs = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
// Decide scale based on button preference ID and user preference
- var scale: Float = when (prefId) {
- Settings.PREF_BUTTON_HOME,
- Settings.PREF_BUTTON_SCREENSHOT,
- Settings.PREF_BUTTON_PLUS,
- Settings.PREF_BUTTON_MINUS -> 0.07f
+ var scale: Float = when (overlayControlData.id) {
+ OverlayControl.BUTTON_HOME.id,
+ OverlayControl.BUTTON_CAPTURE.id,
+ OverlayControl.BUTTON_PLUS.id,
+ OverlayControl.BUTTON_MINUS.id -> 0.07f
- Settings.PREF_BUTTON_L,
- Settings.PREF_BUTTON_R,
- Settings.PREF_BUTTON_ZL,
- Settings.PREF_BUTTON_ZR -> 0.26f
+ OverlayControl.BUTTON_L.id,
+ OverlayControl.BUTTON_R.id,
+ OverlayControl.BUTTON_ZL.id,
+ OverlayControl.BUTTON_ZR.id -> 0.26f
- Settings.PREF_BUTTON_STICK_L,
- Settings.PREF_BUTTON_STICK_R -> 0.155f
+ OverlayControl.BUTTON_STICK_L.id,
+ OverlayControl.BUTTON_STICK_R.id -> 0.155f
else -> 0.11f
}
- scale *= (sPrefs.getInt(Settings.PREF_CONTROL_SCALE, 50) + 50).toFloat()
+ scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat()
scale /= 100f
// Initialize the InputOverlayDrawableButton.
@@ -1104,7 +870,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
defaultStateBitmap,
pressedStateBitmap,
buttonId,
- prefId
+ overlayControlData
)
// Get the minimum and maximum coordinates of the screen where the button can be placed.
@@ -1113,12 +879,8 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
// The X and Y coordinates of the InputOverlayDrawableButton on the InputOverlay.
// These were set in the input overlay configuration menu.
- val xKey = "$prefId-X$layout"
- val yKey = "$prefId-Y$layout"
- val drawableXPercent = sPrefs.getFloat(xKey, 0f)
- val drawableYPercent = sPrefs.getFloat(yKey, 0f)
- val drawableX = (drawableXPercent * max.x + min.x).toInt()
- val drawableY = (drawableYPercent * max.y + min.y).toInt()
+ val drawableX = (position.first * max.x + min.x).toInt()
+ val drawableY = (position.second * max.y + min.y).toInt()
val width = overlayDrawable.width
val height = overlayDrawable.height
@@ -1136,8 +898,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
drawableX - (width / 2),
drawableY - (height / 2)
)
- val savedOpacity = preferences.getInt(Settings.PREF_CONTROL_OPACITY, 100)
- overlayDrawable.setOpacity(savedOpacity * 255 / 100)
+ overlayDrawable.setOpacity(IntSetting.OVERLAY_OPACITY.getInt() * 255 / 100)
return overlayDrawable
}
@@ -1149,7 +910,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
* @param defaultResId The [Bitmap] resource ID of the default state.
* @param pressedOneDirectionResId The [Bitmap] resource ID of the pressed state in one direction.
* @param pressedTwoDirectionsResId The [Bitmap] resource ID of the pressed state in two directions.
- * @param layout The current screen layout as determined by [LANDSCAPE], [PORTRAIT], or [FOLDABLE].
+ * @param position The position on screen as represented by an x and y value between 0 and 1.
* @return The initialized [InputOverlayDrawableDpad]
*/
private fun initializeOverlayDpad(
@@ -1158,17 +919,14 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
defaultResId: Int,
pressedOneDirectionResId: Int,
pressedTwoDirectionsResId: Int,
- layout: String
+ position: Pair<Double, Double>
): InputOverlayDrawableDpad {
// Resources handle for fetching the initial Drawable resource.
val res = context.resources
- // SharedPreference to retrieve the X and Y coordinates for the InputOverlayDrawableDpad.
- val sPrefs = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
// Decide scale based on button ID and user preference
var scale = 0.25f
- scale *= (sPrefs.getInt(Settings.PREF_CONTROL_SCALE, 50) + 50).toFloat()
+ scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat()
scale /= 100f
// Initialize the InputOverlayDrawableDpad.
@@ -1195,10 +953,8 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
// The X and Y coordinates of the InputOverlayDrawableDpad on the InputOverlay.
// These were set in the input overlay configuration menu.
- val drawableXPercent = sPrefs.getFloat("${Settings.PREF_BUTTON_DPAD}-X$layout", 0f)
- val drawableYPercent = sPrefs.getFloat("${Settings.PREF_BUTTON_DPAD}-Y$layout", 0f)
- val drawableX = (drawableXPercent * max.x + min.x).toInt()
- val drawableY = (drawableYPercent * max.y + min.y).toInt()
+ val drawableX = (position.first * max.x + min.x).toInt()
+ val drawableY = (position.second * max.y + min.y).toInt()
val width = overlayDrawable.width
val height = overlayDrawable.height
@@ -1213,8 +969,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
// Need to set the image's position
overlayDrawable.setPosition(drawableX - (width / 2), drawableY - (height / 2))
- val savedOpacity = preferences.getInt(Settings.PREF_CONTROL_OPACITY, 100)
- overlayDrawable.setOpacity(savedOpacity * 255 / 100)
+ overlayDrawable.setOpacity(IntSetting.OVERLAY_OPACITY.getInt() * 255 / 100)
return overlayDrawable
}
@@ -1227,9 +982,9 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
* @param defaultResInner Resource ID for the default inner image of the joystick (the one you actually move around).
* @param pressedResInner Resource ID for the pressed inner image of the joystick.
* @param joystick Identifier for which joystick this is.
- * @param button Identifier for which joystick button this is.
- * @param prefId Identifier for determining where a button appears on screen.
- * @param layout The current screen layout as determined by [LANDSCAPE], [PORTRAIT], or [FOLDABLE].
+ * @param buttonId Identifier for which joystick button this is.
+ * @param overlayControlData Identifier for determining where a button appears on screen.
+ * @param position The position on screen as represented by an x and y value between 0 and 1.
* @return The initialized [InputOverlayDrawableJoystick].
*/
private fun initializeOverlayJoystick(
@@ -1239,19 +994,16 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
defaultResInner: Int,
pressedResInner: Int,
joystick: Int,
- button: Int,
- prefId: String,
- layout: String
+ buttonId: Int,
+ overlayControlData: OverlayControlData,
+ position: Pair<Double, Double>
): InputOverlayDrawableJoystick {
// Resources handle for fetching the initial Drawable resource.
val res = context.resources
- // SharedPreference to retrieve the X and Y coordinates for the InputOverlayDrawableJoystick.
- val sPrefs = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
// Decide scale based on user preference
var scale = 0.3f
- scale *= (sPrefs.getInt(Settings.PREF_CONTROL_SCALE, 50) + 50).toFloat()
+ scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat()
scale /= 100f
// Initialize the InputOverlayDrawableJoystick.
@@ -1265,10 +1017,8 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
// The X and Y coordinates of the InputOverlayDrawableButton on the InputOverlay.
// These were set in the input overlay configuration menu.
- val drawableXPercent = sPrefs.getFloat("$prefId-X$layout", 0f)
- val drawableYPercent = sPrefs.getFloat("$prefId-Y$layout", 0f)
- val drawableX = (drawableXPercent * max.x + min.x).toInt()
- val drawableY = (drawableYPercent * max.y + min.y).toInt()
+ val drawableX = (position.first * max.x + min.x).toInt()
+ val drawableY = (position.second * max.y + min.y).toInt()
val outerScale = 1.66f
// Now set the bounds for the InputOverlayDrawableJoystick.
@@ -1292,14 +1042,13 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
outerRect,
innerRect,
joystick,
- button,
- prefId
+ buttonId,
+ overlayControlData.id
)
// Need to set the image's position
overlayDrawable.setPosition(drawableX, drawableY)
- val savedOpacity = preferences.getInt(Settings.PREF_CONTROL_OPACITY, 100)
- overlayDrawable.setOpacity(savedOpacity * 255 / 100)
+ overlayDrawable.setOpacity(IntSetting.OVERLAY_OPACITY.getInt() * 255 / 100)
return overlayDrawable
}
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt
index 2c28dda88..b14a4f96e 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.kt
@@ -10,6 +10,7 @@ import android.graphics.Rect
import android.graphics.drawable.BitmapDrawable
import android.view.MotionEvent
import org.yuzu.yuzu_emu.NativeLibrary.ButtonState
+import org.yuzu.yuzu_emu.overlay.model.OverlayControlData
/**
* Custom [BitmapDrawable] that is capable
@@ -25,7 +26,7 @@ class InputOverlayDrawableButton(
defaultStateBitmap: Bitmap,
pressedStateBitmap: Bitmap,
val buttonId: Int,
- val prefId: String
+ val overlayControlData: OverlayControlData
) {
// The ID value what motion event is tracking
var trackId: Int
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.kt
index 518b1e783..113bf7c24 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.kt
@@ -14,7 +14,7 @@ import kotlin.math.cos
import kotlin.math.sin
import kotlin.math.sqrt
import org.yuzu.yuzu_emu.NativeLibrary
-import org.yuzu.yuzu_emu.utils.EmulationMenuSettings
+import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
/**
* Custom [BitmapDrawable] that is capable
@@ -125,7 +125,7 @@ class InputOverlayDrawableJoystick(
pressedState = true
outerBitmap.alpha = 0
boundsBoxBitmap.alpha = opacity
- if (EmulationMenuSettings.joystickRelCenter) {
+ if (BooleanSetting.JOYSTICK_REL_CENTER.getBoolean()) {
virtBounds.offset(
xPosition - virtBounds.centerX(),
yPosition - virtBounds.centerY()
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControl.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControl.kt
new file mode 100644
index 000000000..a0eeadf4b
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControl.kt
@@ -0,0 +1,188 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.yuzu.yuzu_emu.overlay.model
+
+import androidx.annotation.IntegerRes
+import org.yuzu.yuzu_emu.R
+import org.yuzu.yuzu_emu.YuzuApplication
+
+enum class OverlayControl(
+ val id: String,
+ val defaultVisibility: Boolean,
+ @IntegerRes val defaultLandscapePositionResources: Pair<Int, Int>,
+ @IntegerRes val defaultPortraitPositionResources: Pair<Int, Int>,
+ @IntegerRes val defaultFoldablePositionResources: Pair<Int, Int>
+) {
+ BUTTON_A(
+ "button_a",
+ true,
+ Pair(R.integer.BUTTON_A_X, R.integer.BUTTON_A_Y),
+ Pair(R.integer.BUTTON_A_X_PORTRAIT, R.integer.BUTTON_A_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_A_X_FOLDABLE, R.integer.BUTTON_A_Y_FOLDABLE)
+ ),
+ BUTTON_B(
+ "button_b",
+ true,
+ Pair(R.integer.BUTTON_B_X, R.integer.BUTTON_B_Y),
+ Pair(R.integer.BUTTON_B_X_PORTRAIT, R.integer.BUTTON_B_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_B_X_FOLDABLE, R.integer.BUTTON_B_Y_FOLDABLE)
+ ),
+ BUTTON_X(
+ "button_x",
+ true,
+ Pair(R.integer.BUTTON_X_X, R.integer.BUTTON_X_Y),
+ Pair(R.integer.BUTTON_X_X_PORTRAIT, R.integer.BUTTON_X_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_X_X_FOLDABLE, R.integer.BUTTON_X_Y_FOLDABLE)
+ ),
+ BUTTON_Y(
+ "button_y",
+ true,
+ Pair(R.integer.BUTTON_Y_X, R.integer.BUTTON_Y_Y),
+ Pair(R.integer.BUTTON_Y_X_PORTRAIT, R.integer.BUTTON_Y_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_Y_X_FOLDABLE, R.integer.BUTTON_Y_Y_FOLDABLE)
+ ),
+ BUTTON_PLUS(
+ "button_plus",
+ true,
+ Pair(R.integer.BUTTON_PLUS_X, R.integer.BUTTON_PLUS_Y),
+ Pair(R.integer.BUTTON_PLUS_X_PORTRAIT, R.integer.BUTTON_PLUS_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_PLUS_X_FOLDABLE, R.integer.BUTTON_PLUS_Y_FOLDABLE)
+ ),
+ BUTTON_MINUS(
+ "button_minus",
+ true,
+ Pair(R.integer.BUTTON_MINUS_X, R.integer.BUTTON_MINUS_Y),
+ Pair(R.integer.BUTTON_MINUS_X_PORTRAIT, R.integer.BUTTON_MINUS_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_MINUS_X_FOLDABLE, R.integer.BUTTON_MINUS_Y_FOLDABLE)
+ ),
+ BUTTON_HOME(
+ "button_home",
+ false,
+ Pair(R.integer.BUTTON_HOME_X, R.integer.BUTTON_HOME_Y),
+ Pair(R.integer.BUTTON_HOME_X_PORTRAIT, R.integer.BUTTON_HOME_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_HOME_X_FOLDABLE, R.integer.BUTTON_HOME_Y_FOLDABLE)
+ ),
+ BUTTON_CAPTURE(
+ "button_capture",
+ false,
+ Pair(R.integer.BUTTON_CAPTURE_X, R.integer.BUTTON_CAPTURE_Y),
+ Pair(R.integer.BUTTON_CAPTURE_X_PORTRAIT, R.integer.BUTTON_CAPTURE_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_CAPTURE_X_FOLDABLE, R.integer.BUTTON_CAPTURE_Y_FOLDABLE)
+ ),
+ BUTTON_L(
+ "button_l",
+ true,
+ Pair(R.integer.BUTTON_L_X, R.integer.BUTTON_L_Y),
+ Pair(R.integer.BUTTON_L_X_PORTRAIT, R.integer.BUTTON_L_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_L_X_FOLDABLE, R.integer.BUTTON_L_Y_FOLDABLE)
+ ),
+ BUTTON_R(
+ "button_r",
+ true,
+ Pair(R.integer.BUTTON_R_X, R.integer.BUTTON_R_Y),
+ Pair(R.integer.BUTTON_R_X_PORTRAIT, R.integer.BUTTON_R_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_R_X_FOLDABLE, R.integer.BUTTON_R_Y_FOLDABLE)
+ ),
+ BUTTON_ZL(
+ "button_zl",
+ true,
+ Pair(R.integer.BUTTON_ZL_X, R.integer.BUTTON_ZL_Y),
+ Pair(R.integer.BUTTON_ZL_X_PORTRAIT, R.integer.BUTTON_ZL_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_ZL_X_FOLDABLE, R.integer.BUTTON_ZL_Y_FOLDABLE)
+ ),
+ BUTTON_ZR(
+ "button_zr",
+ true,
+ Pair(R.integer.BUTTON_ZR_X, R.integer.BUTTON_ZR_Y),
+ Pair(R.integer.BUTTON_ZR_X_PORTRAIT, R.integer.BUTTON_ZR_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_ZR_X_FOLDABLE, R.integer.BUTTON_ZR_Y_FOLDABLE)
+ ),
+ BUTTON_STICK_L(
+ "button_stick_l",
+ true,
+ Pair(R.integer.BUTTON_STICK_L_X, R.integer.BUTTON_STICK_L_Y),
+ Pair(R.integer.BUTTON_STICK_L_X_PORTRAIT, R.integer.BUTTON_STICK_L_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_STICK_L_X_FOLDABLE, R.integer.BUTTON_STICK_L_Y_FOLDABLE)
+ ),
+ BUTTON_STICK_R(
+ "button_stick_r",
+ true,
+ Pair(R.integer.BUTTON_STICK_R_X, R.integer.BUTTON_STICK_R_Y),
+ Pair(R.integer.BUTTON_STICK_R_X_PORTRAIT, R.integer.BUTTON_STICK_R_Y_PORTRAIT),
+ Pair(R.integer.BUTTON_STICK_R_X_FOLDABLE, R.integer.BUTTON_STICK_R_Y_FOLDABLE)
+ ),
+ STICK_L(
+ "stick_l",
+ true,
+ Pair(R.integer.STICK_L_X, R.integer.STICK_L_Y),
+ Pair(R.integer.STICK_L_X_PORTRAIT, R.integer.STICK_L_Y_PORTRAIT),
+ Pair(R.integer.STICK_L_X_FOLDABLE, R.integer.STICK_L_Y_FOLDABLE)
+ ),
+ STICK_R(
+ "stick_r",
+ true,
+ Pair(R.integer.STICK_R_X, R.integer.STICK_R_Y),
+ Pair(R.integer.STICK_R_X_PORTRAIT, R.integer.STICK_R_Y_PORTRAIT),
+ Pair(R.integer.STICK_R_X_FOLDABLE, R.integer.STICK_R_Y_FOLDABLE)
+ ),
+ COMBINED_DPAD(
+ "combined_dpad",
+ true,
+ Pair(R.integer.COMBINED_DPAD_X, R.integer.COMBINED_DPAD_Y),
+ Pair(R.integer.COMBINED_DPAD_X_PORTRAIT, R.integer.COMBINED_DPAD_Y_PORTRAIT),
+ Pair(R.integer.COMBINED_DPAD_X_FOLDABLE, R.integer.COMBINED_DPAD_Y_FOLDABLE)
+ );
+
+ fun getDefaultPositionForLayout(layout: OverlayLayout): Pair<Double, Double> {
+ val rawResourcePair: Pair<Int, Int>
+ YuzuApplication.appContext.resources.apply {
+ rawResourcePair = when (layout) {
+ OverlayLayout.Landscape -> {
+ Pair(
+ getInteger(this@OverlayControl.defaultLandscapePositionResources.first),
+ getInteger(this@OverlayControl.defaultLandscapePositionResources.second)
+ )
+ }
+
+ OverlayLayout.Portrait -> {
+ Pair(
+ getInteger(this@OverlayControl.defaultPortraitPositionResources.first),
+ getInteger(this@OverlayControl.defaultPortraitPositionResources.second)
+ )
+ }
+
+ OverlayLayout.Foldable -> {
+ Pair(
+ getInteger(this@OverlayControl.defaultFoldablePositionResources.first),
+ getInteger(this@OverlayControl.defaultFoldablePositionResources.second)
+ )
+ }
+ }
+ }
+
+ return Pair(
+ rawResourcePair.first.toDouble() / 1000,
+ rawResourcePair.second.toDouble() / 1000
+ )
+ }
+
+ fun toOverlayControlData(): OverlayControlData =
+ OverlayControlData(
+ id,
+ defaultVisibility,
+ getDefaultPositionForLayout(OverlayLayout.Landscape),
+ getDefaultPositionForLayout(OverlayLayout.Portrait),
+ getDefaultPositionForLayout(OverlayLayout.Foldable)
+ )
+
+ companion object {
+ val map: HashMap<String, OverlayControl> by lazy {
+ val hashMap = hashMapOf<String, OverlayControl>()
+ entries.forEach { hashMap[it.id] = it }
+ hashMap
+ }
+
+ fun from(id: String): OverlayControl? = map[id]
+ }
+}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlData.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlData.kt
new file mode 100644
index 000000000..26cfeb1db
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlData.kt
@@ -0,0 +1,19 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.yuzu.yuzu_emu.overlay.model
+
+data class OverlayControlData(
+ val id: String,
+ var enabled: Boolean,
+ var landscapePosition: Pair<Double, Double>,
+ var portraitPosition: Pair<Double, Double>,
+ var foldablePosition: Pair<Double, Double>
+) {
+ fun positionFromLayout(layout: OverlayLayout): Pair<Double, Double> =
+ when (layout) {
+ OverlayLayout.Landscape -> landscapePosition
+ OverlayLayout.Portrait -> portraitPosition
+ OverlayLayout.Foldable -> foldablePosition
+ }
+}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlDefault.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlDefault.kt
new file mode 100644
index 000000000..6bd74c82f
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayControlDefault.kt
@@ -0,0 +1,13 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.yuzu.yuzu_emu.overlay.model
+
+import androidx.annotation.IntegerRes
+
+data class OverlayControlDefault(
+ val buttonId: String,
+ @IntegerRes val landscapePositionResource: Pair<Int, Int>,
+ @IntegerRes val portraitPositionResource: Pair<Int, Int>,
+ @IntegerRes val foldablePositionResource: Pair<Int, Int>
+)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayLayout.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayLayout.kt
new file mode 100644
index 000000000..d728164e5
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/model/OverlayLayout.kt
@@ -0,0 +1,10 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.yuzu.yuzu_emu.overlay.model
+
+enum class OverlayLayout(val id: String) {
+ Landscape("Landscape"),
+ Portrait("Portrait"),
+ Foldable("Foldable")
+}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
index fc0eeb9ad..54380323e 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
@@ -91,18 +91,20 @@ class GamesFragment : Fragment() {
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
- gamesViewModel.isReloading.collect { binding.swipeRefresh.isRefreshing = it }
+ gamesViewModel.isReloading.collect {
+ binding.swipeRefresh.isRefreshing = it
+ if (gamesViewModel.games.value.isEmpty() && !it) {
+ binding.noticeText.visibility = View.VISIBLE
+ } else {
+ binding.noticeText.visibility = View.INVISIBLE
+ }
+ }
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.games.collectLatest {
(binding.gridGames.adapter as GameAdapter).submitList(it)
- if (it.isEmpty()) {
- binding.noticeText.visibility = View.VISIBLE
- } else {
- binding.noticeText.visibility = View.GONE
- }
}
}
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
index b4117d761..622ae996e 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
@@ -625,7 +625,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
File(DirectoryInitialization.userDirectory!!),
DirectoryInitialization.userDirectory!!,
BufferedOutputStream(contentResolver.openOutputStream(result)),
- taskViewModel.cancelled
+ taskViewModel.cancelled,
+ compression = false
)
return@newInstance when (zipResult) {
TaskState.Completed -> getString(R.string.user_data_export_success)
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt
index 0197fd712..de0794a17 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt
@@ -3,9 +3,17 @@
package org.yuzu.yuzu_emu.utils
+import androidx.preference.PreferenceManager
import java.io.IOException
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.YuzuApplication
+import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
+import org.yuzu.yuzu_emu.features.settings.model.IntSetting
+import org.yuzu.yuzu_emu.features.settings.model.Settings
+import org.yuzu.yuzu_emu.overlay.model.OverlayControlData
+import org.yuzu.yuzu_emu.overlay.model.OverlayControl
+import org.yuzu.yuzu_emu.overlay.model.OverlayLayout
+import org.yuzu.yuzu_emu.utils.PreferenceUtil.migratePreference
object DirectoryInitialization {
private var userPath: String? = null
@@ -17,6 +25,7 @@ object DirectoryInitialization {
initializeInternalStorage()
NativeLibrary.initializeSystem(false)
NativeConfig.initializeGlobalConfig()
+ migrateSettings()
areDirectoriesReady = true
}
}
@@ -35,4 +44,170 @@ object DirectoryInitialization {
e.printStackTrace()
}
}
+
+ private fun migrateSettings() {
+ val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
+ var saveConfig = false
+ val theme = preferences.migratePreference<Int>(Settings.PREF_THEME)
+ if (theme != null) {
+ IntSetting.THEME.setInt(theme)
+ saveConfig = true
+ }
+
+ val themeMode = preferences.migratePreference<Int>(Settings.PREF_THEME_MODE)
+ if (themeMode != null) {
+ IntSetting.THEME_MODE.setInt(themeMode)
+ saveConfig = true
+ }
+
+ val blackBackgrounds =
+ preferences.migratePreference<Boolean>(Settings.PREF_BLACK_BACKGROUNDS)
+ if (blackBackgrounds != null) {
+ BooleanSetting.BLACK_BACKGROUNDS.setBoolean(blackBackgrounds)
+ saveConfig = true
+ }
+
+ val joystickRelCenter =
+ preferences.migratePreference<Boolean>(Settings.PREF_MENU_SETTINGS_JOYSTICK_REL_CENTER)
+ if (joystickRelCenter != null) {
+ BooleanSetting.JOYSTICK_REL_CENTER.setBoolean(joystickRelCenter)
+ saveConfig = true
+ }
+
+ val dpadSlide =
+ preferences.migratePreference<Boolean>(Settings.PREF_MENU_SETTINGS_DPAD_SLIDE)
+ if (dpadSlide != null) {
+ BooleanSetting.DPAD_SLIDE.setBoolean(dpadSlide)
+ saveConfig = true
+ }
+
+ val hapticFeedback =
+ preferences.migratePreference<Boolean>(Settings.PREF_MENU_SETTINGS_HAPTICS)
+ if (hapticFeedback != null) {
+ BooleanSetting.HAPTIC_FEEDBACK.setBoolean(hapticFeedback)
+ saveConfig = true
+ }
+
+ val showPerformanceOverlay =
+ preferences.migratePreference<Boolean>(Settings.PREF_MENU_SETTINGS_SHOW_FPS)
+ if (showPerformanceOverlay != null) {
+ BooleanSetting.SHOW_PERFORMANCE_OVERLAY.setBoolean(showPerformanceOverlay)
+ saveConfig = true
+ }
+
+ val showInputOverlay =
+ preferences.migratePreference<Boolean>(Settings.PREF_MENU_SETTINGS_SHOW_OVERLAY)
+ if (showInputOverlay != null) {
+ BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(showInputOverlay)
+ saveConfig = true
+ }
+
+ val overlayOpacity = preferences.migratePreference<Int>(Settings.PREF_CONTROL_OPACITY)
+ if (overlayOpacity != null) {
+ IntSetting.OVERLAY_OPACITY.setInt(overlayOpacity)
+ saveConfig = true
+ }
+
+ val overlayScale = preferences.migratePreference<Int>(Settings.PREF_CONTROL_SCALE)
+ if (overlayScale != null) {
+ IntSetting.OVERLAY_SCALE.setInt(overlayScale)
+ saveConfig = true
+ }
+
+ var setOverlayData = false
+ val overlayControlData = NativeConfig.getOverlayControlData()
+ if (overlayControlData.isEmpty()) {
+ val overlayControlDataMap =
+ NativeConfig.getOverlayControlData().associateBy { it.id }.toMutableMap()
+ for (button in Settings.overlayPreferences) {
+ val buttonId = convertButtonId(button)
+ var buttonEnabled = preferences.migratePreference<Boolean>(button)
+ if (buttonEnabled == null) {
+ buttonEnabled = OverlayControl.map[buttonId]?.defaultVisibility == true
+ }
+
+ var landscapeXPosition = preferences.migratePreference<Float>(
+ "$button-X${Settings.PREF_LANDSCAPE_SUFFIX}"
+ )?.toDouble()
+ var landscapeYPosition = preferences.migratePreference<Float>(
+ "$button-Y${Settings.PREF_LANDSCAPE_SUFFIX}"
+ )?.toDouble()
+ if (landscapeXPosition == null || landscapeYPosition == null) {
+ val landscapePosition = OverlayControl.map[buttonId]
+ ?.getDefaultPositionForLayout(OverlayLayout.Landscape) ?: Pair(0.0, 0.0)
+ landscapeXPosition = landscapePosition.first
+ landscapeYPosition = landscapePosition.second
+ }
+
+ var portraitXPosition = preferences.migratePreference<Float>(
+ "$button-X${Settings.PREF_PORTRAIT_SUFFIX}"
+ )?.toDouble()
+ var portraitYPosition = preferences.migratePreference<Float>(
+ "$button-Y${Settings.PREF_PORTRAIT_SUFFIX}"
+ )?.toDouble()
+ if (portraitXPosition == null || portraitYPosition == null) {
+ val portraitPosition = OverlayControl.map[buttonId]
+ ?.getDefaultPositionForLayout(OverlayLayout.Portrait) ?: Pair(0.0, 0.0)
+ portraitXPosition = portraitPosition.first
+ portraitYPosition = portraitPosition.second
+ }
+
+ var foldableXPosition = preferences.migratePreference<Float>(
+ "$button-X${Settings.PREF_FOLDABLE_SUFFIX}"
+ )?.toDouble()
+ var foldableYPosition = preferences.migratePreference<Float>(
+ "$button-Y${Settings.PREF_FOLDABLE_SUFFIX}"
+ )?.toDouble()
+ if (foldableXPosition == null || foldableYPosition == null) {
+ val foldablePosition = OverlayControl.map[buttonId]
+ ?.getDefaultPositionForLayout(OverlayLayout.Foldable) ?: Pair(0.0, 0.0)
+ foldableXPosition = foldablePosition.first
+ foldableYPosition = foldablePosition.second
+ }
+
+ val controlData = OverlayControlData(
+ buttonId,
+ buttonEnabled,
+ Pair(landscapeXPosition, landscapeYPosition),
+ Pair(portraitXPosition, portraitYPosition),
+ Pair(foldableXPosition, foldableYPosition)
+ )
+ overlayControlDataMap[buttonId] = controlData
+ setOverlayData = true
+ }
+
+ if (setOverlayData) {
+ NativeConfig.setOverlayControlData(
+ overlayControlDataMap.map { it.value }.toTypedArray()
+ )
+ saveConfig = true
+ }
+ }
+
+ if (saveConfig) {
+ NativeConfig.saveGlobalConfig()
+ }
+ }
+
+ private fun convertButtonId(buttonId: String): String =
+ when (buttonId) {
+ Settings.PREF_BUTTON_A -> OverlayControl.BUTTON_A.id
+ Settings.PREF_BUTTON_B -> OverlayControl.BUTTON_B.id
+ Settings.PREF_BUTTON_X -> OverlayControl.BUTTON_X.id
+ Settings.PREF_BUTTON_Y -> OverlayControl.BUTTON_Y.id
+ Settings.PREF_BUTTON_L -> OverlayControl.BUTTON_L.id
+ Settings.PREF_BUTTON_R -> OverlayControl.BUTTON_R.id
+ Settings.PREF_BUTTON_ZL -> OverlayControl.BUTTON_ZL.id
+ Settings.PREF_BUTTON_ZR -> OverlayControl.BUTTON_ZR.id
+ Settings.PREF_BUTTON_PLUS -> OverlayControl.BUTTON_PLUS.id
+ Settings.PREF_BUTTON_MINUS -> OverlayControl.BUTTON_MINUS.id
+ Settings.PREF_BUTTON_DPAD -> OverlayControl.COMBINED_DPAD.id
+ Settings.PREF_STICK_L -> OverlayControl.STICK_L.id
+ Settings.PREF_STICK_R -> OverlayControl.STICK_R.id
+ Settings.PREF_BUTTON_HOME -> OverlayControl.BUTTON_HOME.id
+ Settings.PREF_BUTTON_SCREENSHOT -> OverlayControl.BUTTON_CAPTURE.id
+ Settings.PREF_BUTTON_STICK_L -> OverlayControl.BUTTON_STICK_L.id
+ Settings.PREF_BUTTON_STICK_R -> OverlayControl.BUTTON_STICK_R.id
+ else -> ""
+ }
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt
deleted file mode 100644
index 7e8f058c1..000000000
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.yuzu.yuzu_emu.utils
-
-import androidx.preference.PreferenceManager
-import org.yuzu.yuzu_emu.YuzuApplication
-import org.yuzu.yuzu_emu.features.settings.model.Settings
-
-object EmulationMenuSettings {
- private val preferences =
- PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
-
- var joystickRelCenter: Boolean
- get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_JOYSTICK_REL_CENTER, true)
- set(value) {
- preferences.edit()
- .putBoolean(Settings.PREF_MENU_SETTINGS_JOYSTICK_REL_CENTER, value)
- .apply()
- }
- var dpadSlide: Boolean
- get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_DPAD_SLIDE, true)
- set(value) {
- preferences.edit()
- .putBoolean(Settings.PREF_MENU_SETTINGS_DPAD_SLIDE, value)
- .apply()
- }
- var hapticFeedback: Boolean
- get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_HAPTICS, false)
- set(value) {
- preferences.edit()
- .putBoolean(Settings.PREF_MENU_SETTINGS_HAPTICS, value)
- .apply()
- }
-
- var showFps: Boolean
- get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_SHOW_FPS, false)
- set(value) {
- preferences.edit()
- .putBoolean(Settings.PREF_MENU_SETTINGS_SHOW_FPS, value)
- .apply()
- }
- var showOverlay: Boolean
- get() = preferences.getBoolean(Settings.PREF_MENU_SETTINGS_SHOW_OVERLAY, true)
- set(value) {
- preferences.edit()
- .putBoolean(Settings.PREF_MENU_SETTINGS_SHOW_OVERLAY, value)
- .apply()
- }
-}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt
index 00c6bf90e..132f002fb 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt
@@ -21,6 +21,7 @@ import org.yuzu.yuzu_emu.model.TaskState
import java.io.BufferedOutputStream
import java.lang.NullPointerException
import java.nio.charset.StandardCharsets
+import java.util.zip.Deflater
import java.util.zip.ZipOutputStream
import kotlin.IllegalStateException
@@ -312,15 +313,23 @@ object FileUtil {
* @param inputFile File representation of the item that will be zipped
* @param rootDir Directory containing the inputFile
* @param outputStream Stream where the zip file will be output
+ * @param cancelled [StateFlow] that reports whether this process has been cancelled
+ * @param compression Disables compression if true
*/
fun zipFromInternalStorage(
inputFile: File,
rootDir: String,
outputStream: BufferedOutputStream,
- cancelled: StateFlow<Boolean>? = null
+ cancelled: StateFlow<Boolean>? = null,
+ compression: Boolean = true
): TaskState {
try {
ZipOutputStream(outputStream).use { zos ->
+ if (!compression) {
+ zos.setMethod(ZipOutputStream.DEFLATED)
+ zos.setLevel(Deflater.NO_COMPRESSION)
+ }
+
inputFile.walkTopDown().forEach { file ->
if (cancelled?.value == true) {
return TaskState.Cancelled
@@ -338,6 +347,7 @@ object FileUtil {
}
}
} catch (e: Exception) {
+ Log.error("[FileUtil] Failed creating zip file - ${e.message}")
return TaskState.Failed
}
return TaskState.Completed
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt
index 7512d5eed..a4c14b3a7 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeConfig.kt
@@ -4,6 +4,7 @@
package org.yuzu.yuzu_emu.utils
import org.yuzu.yuzu_emu.model.GameDir
+import org.yuzu.yuzu_emu.overlay.model.OverlayControlData
object NativeConfig {
/**
@@ -150,4 +151,21 @@ object NativeConfig {
*/
@Synchronized
external fun setDisabledAddons(programId: String, disabledAddons: Array<String>)
+
+ /**
+ * Gets an array of [OverlayControlData] from settings
+ *
+ * @return An array of [OverlayControlData]
+ */
+ @Synchronized
+ external fun getOverlayControlData(): Array<OverlayControlData>
+
+ /**
+ * Clears the AndroidSettings::values.overlay_control_data array and replaces its values
+ * with [overlayControlData]
+ *
+ * @param overlayControlData Replacement array of [OverlayControlData]
+ */
+ @Synchronized
+ external fun setOverlayControlData(overlayControlData: Array<OverlayControlData>)
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PreferenceUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PreferenceUtil.kt
new file mode 100644
index 000000000..a233ba25c
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PreferenceUtil.kt
@@ -0,0 +1,37 @@
+// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.yuzu.yuzu_emu.utils
+
+import android.content.SharedPreferences
+
+object PreferenceUtil {
+ /**
+ * Retrieves a shared preference value and then deletes the value in storage.
+ * @param key Associated key for the value in this preferences instance
+ * @return Typed value associated with [key]. Null if no such key exists.
+ */
+ inline fun <reified T> SharedPreferences.migratePreference(key: String): T? {
+ if (!this.contains(key)) {
+ return null
+ }
+
+ val value: Any = when (T::class) {
+ String::class -> this.getString(key, "")!!
+
+ Boolean::class -> this.getBoolean(key, false)
+
+ Int::class -> this.getInt(key, 0)
+
+ Float::class -> this.getFloat(key, 0f)
+
+ Long::class -> this.getLong(key, 0)
+
+ else -> throw IllegalStateException("Tried to migrate preference with invalid type!")
+ }
+ deletePreference(key)
+ return value as T
+ }
+
+ fun SharedPreferences.deletePreference(key: String) = this.edit().remove(key).apply()
+}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt
index f312e24cf..6f7f40e43 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeHelper.kt
@@ -5,38 +5,38 @@ package org.yuzu.yuzu_emu.utils
import android.content.res.Configuration
import android.graphics.Color
+import android.os.Build
import androidx.annotation.ColorInt
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsControllerCompat
-import androidx.preference.PreferenceManager
import kotlin.math.roundToInt
import org.yuzu.yuzu_emu.R
-import org.yuzu.yuzu_emu.YuzuApplication
-import org.yuzu.yuzu_emu.features.settings.model.Settings
+import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
+import org.yuzu.yuzu_emu.features.settings.model.IntSetting
import org.yuzu.yuzu_emu.ui.main.ThemeProvider
object ThemeHelper {
const val SYSTEM_BAR_ALPHA = 0.9f
- private const val DEFAULT = 0
- private const val MATERIAL_YOU = 1
-
fun setTheme(activity: AppCompatActivity) {
- val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext)
setThemeMode(activity)
- when (preferences.getInt(Settings.PREF_THEME, 0)) {
- DEFAULT -> activity.setTheme(R.style.Theme_Yuzu_Main)
- MATERIAL_YOU -> activity.setTheme(R.style.Theme_Yuzu_Main_MaterialYou)
+ when (Theme.from(IntSetting.THEME.getInt())) {
+ Theme.Default -> activity.setTheme(R.style.Theme_Yuzu_Main)
+ Theme.MaterialYou -> {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ activity.setTheme(R.style.Theme_Yuzu_Main_MaterialYou)
+ } else {
+ activity.setTheme(R.style.Theme_Yuzu_Main)
+ }
+ }
}
// Using a specific night mode check because this could apply incorrectly when using the
// light app mode, dark system mode, and black backgrounds. Launching the settings activity
// will then show light mode colors/navigation bars but with black backgrounds.
- if (preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) &&
- isNightMode(activity)
- ) {
+ if (BooleanSetting.BLACK_BACKGROUNDS.getBoolean() && isNightMode(activity)) {
activity.setTheme(R.style.ThemeOverlay_Yuzu_Dark)
}
}
@@ -60,8 +60,7 @@ object ThemeHelper {
}
fun setThemeMode(activity: AppCompatActivity) {
- val themeMode = PreferenceManager.getDefaultSharedPreferences(activity.applicationContext)
- .getInt(Settings.PREF_THEME_MODE, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
+ val themeMode = IntSetting.THEME_MODE.getInt()
activity.delegate.localNightMode = themeMode
val windowController = WindowCompat.getInsetsController(
activity.window,
@@ -95,3 +94,12 @@ object ThemeHelper {
windowController.isAppearanceLightNavigationBars = false
}
}
+
+enum class Theme(val int: Int) {
+ Default(0),
+ MaterialYou(1);
+
+ companion object {
+ fun from(int: Int): Theme = entries.firstOrNull { it.int == int } ?: Default
+ }
+}
diff --git a/src/android/app/src/main/jni/android_common/android_common.cpp b/src/android/app/src/main/jni/android_common/android_common.cpp
index 52d8ecfeb..1e884ffdd 100644
--- a/src/android/app/src/main/jni/android_common/android_common.cpp
+++ b/src/android/app/src/main/jni/android_common/android_common.cpp
@@ -9,6 +9,7 @@
#include <jni.h>
#include "common/string_util.h"
+#include "jni/id_cache.h"
std::string GetJString(JNIEnv* env, jstring jstr) {
if (!jstr) {
@@ -33,3 +34,11 @@ jstring ToJString(JNIEnv* env, std::string_view str) {
jstring ToJString(JNIEnv* env, std::u16string_view str) {
return ToJString(env, Common::UTF16ToUTF8(str));
}
+
+double GetJDouble(JNIEnv* env, jobject jdouble) {
+ return env->GetDoubleField(jdouble, IDCache::GetDoubleValueField());
+}
+
+jobject ToJDouble(JNIEnv* env, double value) {
+ return env->NewObject(IDCache::GetDoubleClass(), IDCache::GetDoubleConstructor(), value);
+}
diff --git a/src/android/app/src/main/jni/android_common/android_common.h b/src/android/app/src/main/jni/android_common/android_common.h
index ccb0c06f7..8eb803e1b 100644
--- a/src/android/app/src/main/jni/android_common/android_common.h
+++ b/src/android/app/src/main/jni/android_common/android_common.h
@@ -10,3 +10,6 @@
std::string GetJString(JNIEnv* env, jstring jstr);
jstring ToJString(JNIEnv* env, std::string_view str);
jstring ToJString(JNIEnv* env, std::u16string_view str);
+
+double GetJDouble(JNIEnv* env, jobject jdouble);
+jobject ToJDouble(JNIEnv* env, double value);
diff --git a/src/android/app/src/main/jni/android_config.cpp b/src/android/app/src/main/jni/android_config.cpp
index 9c3a5a9b2..08aed3216 100644
--- a/src/android/app/src/main/jni/android_config.cpp
+++ b/src/android/app/src/main/jni/android_config.cpp
@@ -14,12 +14,6 @@ AndroidConfig::AndroidConfig(const std::string& config_name, ConfigType config_t
}
}
-AndroidConfig::~AndroidConfig() {
- if (global) {
- AndroidConfig::SaveAllValues();
- }
-}
-
void AndroidConfig::ReloadAllValues() {
Reload();
ReadAndroidValues();
@@ -35,6 +29,7 @@ void AndroidConfig::ReadAndroidValues() {
if (global) {
ReadAndroidUIValues();
ReadUIValues();
+ ReadOverlayValues();
}
ReadDriverValues();
}
@@ -81,10 +76,42 @@ void AndroidConfig::ReadDriverValues() {
EndGroup();
}
+void AndroidConfig::ReadOverlayValues() {
+ BeginGroup(Settings::TranslateCategory(Settings::Category::Overlay));
+
+ ReadCategory(Settings::Category::Overlay);
+
+ AndroidSettings::values.overlay_control_data.clear();
+ const int control_data_size = BeginArray("control_data");
+ for (int i = 0; i < control_data_size; ++i) {
+ SetArrayIndex(i);
+ AndroidSettings::OverlayControlData control_data;
+ control_data.id = ReadStringSetting(std::string("id"));
+ control_data.enabled = ReadBooleanSetting(std::string("enabled"));
+ control_data.landscape_position.first =
+ ReadDoubleSetting(std::string("landscape\\x_position"));
+ control_data.landscape_position.second =
+ ReadDoubleSetting(std::string("landscape\\y_position"));
+ control_data.portrait_position.first =
+ ReadDoubleSetting(std::string("portrait\\x_position"));
+ control_data.portrait_position.second =
+ ReadDoubleSetting(std::string("portrait\\y_position"));
+ control_data.foldable_position.first =
+ ReadDoubleSetting(std::string("foldable\\x_position"));
+ control_data.foldable_position.second =
+ ReadDoubleSetting(std::string("foldable\\y_position"));
+ AndroidSettings::values.overlay_control_data.push_back(control_data);
+ }
+ EndArray();
+
+ EndGroup();
+}
+
void AndroidConfig::SaveAndroidValues() {
if (global) {
SaveAndroidUIValues();
SaveUIValues();
+ SaveOverlayValues();
}
SaveDriverValues();
@@ -114,8 +141,9 @@ void AndroidConfig::SavePathValues() {
for (size_t i = 0; i < AndroidSettings::values.game_dirs.size(); ++i) {
SetArrayIndex(i);
const auto& game_dir = AndroidSettings::values.game_dirs[i];
- WriteSetting(std::string("path"), game_dir.path);
- WriteSetting(std::string("deep_scan"), game_dir.deep_scan, std::make_optional(false));
+ WriteStringSetting(std::string("path"), game_dir.path);
+ WriteBooleanSetting(std::string("deep_scan"), game_dir.deep_scan,
+ std::make_optional(false));
}
EndArray();
@@ -130,6 +158,35 @@ void AndroidConfig::SaveDriverValues() {
EndGroup();
}
+void AndroidConfig::SaveOverlayValues() {
+ BeginGroup(Settings::TranslateCategory(Settings::Category::Overlay));
+
+ WriteCategory(Settings::Category::Overlay);
+
+ BeginArray("control_data");
+ for (size_t i = 0; i < AndroidSettings::values.overlay_control_data.size(); ++i) {
+ SetArrayIndex(i);
+ const auto& control_data = AndroidSettings::values.overlay_control_data[i];
+ WriteStringSetting(std::string("id"), control_data.id);
+ WriteBooleanSetting(std::string("enabled"), control_data.enabled);
+ WriteDoubleSetting(std::string("landscape\\x_position"),
+ control_data.landscape_position.first);
+ WriteDoubleSetting(std::string("landscape\\y_position"),
+ control_data.landscape_position.second);
+ WriteDoubleSetting(std::string("portrait\\x_position"),
+ control_data.portrait_position.first);
+ WriteDoubleSetting(std::string("portrait\\y_position"),
+ control_data.portrait_position.second);
+ WriteDoubleSetting(std::string("foldable\\x_position"),
+ control_data.foldable_position.first);
+ WriteDoubleSetting(std::string("foldable\\y_position"),
+ control_data.foldable_position.second);
+ }
+ EndArray();
+
+ EndGroup();
+}
+
std::vector<Settings::BasicSetting*>& AndroidConfig::FindRelevantList(Settings::Category category) {
auto& map = Settings::values.linkage.by_category;
if (map.contains(category)) {
diff --git a/src/android/app/src/main/jni/android_config.h b/src/android/app/src/main/jni/android_config.h
index 2c12874e1..693e1e3f0 100644
--- a/src/android/app/src/main/jni/android_config.h
+++ b/src/android/app/src/main/jni/android_config.h
@@ -9,7 +9,6 @@ class AndroidConfig final : public Config {
public:
explicit AndroidConfig(const std::string& config_name = "config",
ConfigType config_type = ConfigType::GlobalConfig);
- ~AndroidConfig() override;
void ReloadAllValues() override;
void SaveAllValues() override;
@@ -18,6 +17,7 @@ protected:
void ReadAndroidValues();
void ReadAndroidUIValues();
void ReadDriverValues();
+ void ReadOverlayValues();
void ReadHidbusValues() override {}
void ReadDebugControlValues() override {}
void ReadPathValues() override;
@@ -30,6 +30,7 @@ protected:
void SaveAndroidValues();
void SaveAndroidUIValues();
void SaveDriverValues();
+ void SaveOverlayValues();
void SaveHidbusValues() override {}
void SaveDebugControlValues() override {}
void SavePathValues() override;
diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h
index 3733f5a3c..559ae83eb 100644
--- a/src/android/app/src/main/jni/android_settings.h
+++ b/src/android/app/src/main/jni/android_settings.h
@@ -14,6 +14,14 @@ struct GameDir {
bool deep_scan = false;
};
+struct OverlayControlData {
+ std::string id;
+ bool enabled;
+ std::pair<double, double> landscape_position;
+ std::pair<double, double> portrait_position;
+ std::pair<double, double> foldable_position;
+};
+
struct Values {
Settings::Linkage linkage;
@@ -33,6 +41,28 @@ struct Values {
Settings::SwitchableSetting<std::string, false> driver_path{linkage, "", "driver_path",
Settings::Category::GpuDriver};
+
+ Settings::Setting<s32> theme{linkage, 0, "theme", Settings::Category::Android};
+ Settings::Setting<s32> theme_mode{linkage, -1, "theme_mode", Settings::Category::Android};
+ Settings::Setting<bool> black_backgrounds{linkage, false, "black_backgrounds",
+ Settings::Category::Android};
+
+ // Input/performance overlay settings
+ std::vector<OverlayControlData> overlay_control_data;
+ Settings::Setting<s32> overlay_scale{linkage, 50, "control_scale", Settings::Category::Overlay};
+ Settings::Setting<s32> overlay_opacity{linkage, 100, "control_opacity",
+ Settings::Category::Overlay};
+
+ Settings::Setting<bool> joystick_rel_center{linkage, true, "joystick_rel_center",
+ Settings::Category::Overlay};
+ Settings::Setting<bool> dpad_slide{linkage, true, "dpad_slide", Settings::Category::Overlay};
+ Settings::Setting<bool> haptic_feedback{linkage, true, "haptic_feedback",
+ Settings::Category::Overlay};
+ Settings::Setting<bool> show_performance_overlay{linkage, true, "show_performance_overlay",
+ Settings::Category::Overlay};
+ Settings::Setting<bool> show_input_overlay{linkage, true, "show_input_overlay",
+ Settings::Category::Overlay};
+ Settings::Setting<bool> touchscreen{linkage, true, "touchscreen", Settings::Category::Overlay};
};
extern Values values;
diff --git a/src/android/app/src/main/jni/id_cache.cpp b/src/android/app/src/main/jni/id_cache.cpp
index e7a86d3fd..c79ad7d76 100644
--- a/src/android/app/src/main/jni/id_cache.cpp
+++ b/src/android/app/src/main/jni/id_cache.cpp
@@ -35,6 +35,18 @@ static jmethodID s_pair_constructor;
static jfieldID s_pair_first_field;
static jfieldID s_pair_second_field;
+static jclass s_overlay_control_data_class;
+static jmethodID s_overlay_control_data_constructor;
+static jfieldID s_overlay_control_data_id_field;
+static jfieldID s_overlay_control_data_enabled_field;
+static jfieldID s_overlay_control_data_landscape_position_field;
+static jfieldID s_overlay_control_data_portrait_position_field;
+static jfieldID s_overlay_control_data_foldable_position_field;
+
+static jclass s_double_class;
+static jmethodID s_double_constructor;
+static jfieldID s_double_value_field;
+
static constexpr jint JNI_VERSION = JNI_VERSION_1_6;
namespace IDCache {
@@ -146,6 +158,46 @@ jfieldID GetPairSecondField() {
return s_pair_second_field;
}
+jclass GetOverlayControlDataClass() {
+ return s_overlay_control_data_class;
+}
+
+jmethodID GetOverlayControlDataConstructor() {
+ return s_overlay_control_data_constructor;
+}
+
+jfieldID GetOverlayControlDataIdField() {
+ return s_overlay_control_data_id_field;
+}
+
+jfieldID GetOverlayControlDataEnabledField() {
+ return s_overlay_control_data_enabled_field;
+}
+
+jfieldID GetOverlayControlDataLandscapePositionField() {
+ return s_overlay_control_data_landscape_position_field;
+}
+
+jfieldID GetOverlayControlDataPortraitPositionField() {
+ return s_overlay_control_data_portrait_position_field;
+}
+
+jfieldID GetOverlayControlDataFoldablePositionField() {
+ return s_overlay_control_data_foldable_position_field;
+}
+
+jclass GetDoubleClass() {
+ return s_double_class;
+}
+
+jmethodID GetDoubleConstructor() {
+ return s_double_constructor;
+}
+
+jfieldID GetDoubleValueField() {
+ return s_double_value_field;
+}
+
} // namespace IDCache
#ifdef __cplusplus
@@ -207,6 +259,31 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
s_pair_second_field = env->GetFieldID(pair_class, "second", "Ljava/lang/Object;");
env->DeleteLocalRef(pair_class);
+ const jclass overlay_control_data_class =
+ env->FindClass("org/yuzu/yuzu_emu/overlay/model/OverlayControlData");
+ s_overlay_control_data_class =
+ reinterpret_cast<jclass>(env->NewGlobalRef(overlay_control_data_class));
+ s_overlay_control_data_constructor =
+ env->GetMethodID(overlay_control_data_class, "<init>",
+ "(Ljava/lang/String;ZLkotlin/Pair;Lkotlin/Pair;Lkotlin/Pair;)V");
+ s_overlay_control_data_id_field =
+ env->GetFieldID(overlay_control_data_class, "id", "Ljava/lang/String;");
+ s_overlay_control_data_enabled_field =
+ env->GetFieldID(overlay_control_data_class, "enabled", "Z");
+ s_overlay_control_data_landscape_position_field =
+ env->GetFieldID(overlay_control_data_class, "landscapePosition", "Lkotlin/Pair;");
+ s_overlay_control_data_portrait_position_field =
+ env->GetFieldID(overlay_control_data_class, "portraitPosition", "Lkotlin/Pair;");
+ s_overlay_control_data_foldable_position_field =
+ env->GetFieldID(overlay_control_data_class, "foldablePosition", "Lkotlin/Pair;");
+ env->DeleteLocalRef(overlay_control_data_class);
+
+ const jclass double_class = env->FindClass("java/lang/Double");
+ s_double_class = reinterpret_cast<jclass>(env->NewGlobalRef(double_class));
+ s_double_constructor = env->GetMethodID(double_class, "<init>", "(D)V");
+ s_double_value_field = env->GetFieldID(double_class, "value", "D");
+ env->DeleteLocalRef(double_class);
+
// Initialize Android Storage
Common::FS::Android::RegisterCallbacks(env, s_native_library_class);
@@ -231,6 +308,8 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) {
env->DeleteGlobalRef(s_game_class);
env->DeleteGlobalRef(s_string_class);
env->DeleteGlobalRef(s_pair_class);
+ env->DeleteGlobalRef(s_overlay_control_data_class);
+ env->DeleteGlobalRef(s_double_class);
// UnInitialize applets
SoftwareKeyboard::CleanupJNI(env);
diff --git a/src/android/app/src/main/jni/id_cache.h b/src/android/app/src/main/jni/id_cache.h
index 24030be42..784d1412f 100644
--- a/src/android/app/src/main/jni/id_cache.h
+++ b/src/android/app/src/main/jni/id_cache.h
@@ -35,4 +35,16 @@ jmethodID GetPairConstructor();
jfieldID GetPairFirstField();
jfieldID GetPairSecondField();
+jclass GetOverlayControlDataClass();
+jmethodID GetOverlayControlDataConstructor();
+jfieldID GetOverlayControlDataIdField();
+jfieldID GetOverlayControlDataEnabledField();
+jfieldID GetOverlayControlDataLandscapePositionField();
+jfieldID GetOverlayControlDataPortraitPositionField();
+jfieldID GetOverlayControlDataFoldablePositionField();
+
+jclass GetDoubleClass();
+jmethodID GetDoubleConstructor();
+jfieldID GetDoubleValueField();
+
} // namespace IDCache
diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp
index 324d9e9cd..535902483 100644
--- a/src/android/app/src/main/jni/native_config.cpp
+++ b/src/android/app/src/main/jni/native_config.cpp
@@ -344,4 +344,74 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setDisabledAddons(JNIEnv* env, j
Settings::values.disabled_addons[program_id] = disabled_addons;
}
+jobjectArray Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getOverlayControlData(JNIEnv* env,
+ jobject obj) {
+ jobjectArray joverlayControlDataArray =
+ env->NewObjectArray(AndroidSettings::values.overlay_control_data.size(),
+ IDCache::GetOverlayControlDataClass(), nullptr);
+ for (size_t i = 0; i < AndroidSettings::values.overlay_control_data.size(); ++i) {
+ const auto& control_data = AndroidSettings::values.overlay_control_data[i];
+ jobject jlandscapePosition =
+ env->NewObject(IDCache::GetPairClass(), IDCache::GetPairConstructor(),
+ ToJDouble(env, control_data.landscape_position.first),
+ ToJDouble(env, control_data.landscape_position.second));
+ jobject jportraitPosition =
+ env->NewObject(IDCache::GetPairClass(), IDCache::GetPairConstructor(),
+ ToJDouble(env, control_data.portrait_position.first),
+ ToJDouble(env, control_data.portrait_position.second));
+ jobject jfoldablePosition =
+ env->NewObject(IDCache::GetPairClass(), IDCache::GetPairConstructor(),
+ ToJDouble(env, control_data.foldable_position.first),
+ ToJDouble(env, control_data.foldable_position.second));
+
+ jobject jcontrolData = env->NewObject(
+ IDCache::GetOverlayControlDataClass(), IDCache::GetOverlayControlDataConstructor(),
+ ToJString(env, control_data.id), control_data.enabled, jlandscapePosition,
+ jportraitPosition, jfoldablePosition);
+ env->SetObjectArrayElement(joverlayControlDataArray, i, jcontrolData);
+ }
+ return joverlayControlDataArray;
+}
+
+void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setOverlayControlData(
+ JNIEnv* env, jobject obj, jobjectArray joverlayControlDataArray) {
+ AndroidSettings::values.overlay_control_data.clear();
+ int size = env->GetArrayLength(joverlayControlDataArray);
+
+ if (size == 0) {
+ return;
+ }
+
+ for (int i = 0; i < size; ++i) {
+ jobject joverlayControlData = env->GetObjectArrayElement(joverlayControlDataArray, i);
+ jstring jidString = static_cast<jstring>(
+ env->GetObjectField(joverlayControlData, IDCache::GetOverlayControlDataIdField()));
+ bool enabled = static_cast<bool>(env->GetBooleanField(
+ joverlayControlData, IDCache::GetOverlayControlDataEnabledField()));
+
+ jobject jlandscapePosition = env->GetObjectField(
+ joverlayControlData, IDCache::GetOverlayControlDataLandscapePositionField());
+ std::pair<double, double> landscape_position = std::make_pair(
+ GetJDouble(env, env->GetObjectField(jlandscapePosition, IDCache::GetPairFirstField())),
+ GetJDouble(env,
+ env->GetObjectField(jlandscapePosition, IDCache::GetPairSecondField())));
+
+ jobject jportraitPosition = env->GetObjectField(
+ joverlayControlData, IDCache::GetOverlayControlDataPortraitPositionField());
+ std::pair<double, double> portrait_position = std::make_pair(
+ GetJDouble(env, env->GetObjectField(jportraitPosition, IDCache::GetPairFirstField())),
+ GetJDouble(env, env->GetObjectField(jportraitPosition, IDCache::GetPairSecondField())));
+
+ jobject jfoldablePosition = env->GetObjectField(
+ joverlayControlData, IDCache::GetOverlayControlDataFoldablePositionField());
+ std::pair<double, double> foldable_position = std::make_pair(
+ GetJDouble(env, env->GetObjectField(jfoldablePosition, IDCache::GetPairFirstField())),
+ GetJDouble(env, env->GetObjectField(jfoldablePosition, IDCache::GetPairSecondField())));
+
+ AndroidSettings::values.overlay_control_data.push_back(AndroidSettings::OverlayControlData{
+ GetJString(env, jidString), enabled, landscape_position, portrait_position,
+ foldable_position});
+ }
+}
+
} // extern "C"
diff --git a/src/android/app/src/main/res/layout/list_item_setting_switch.xml b/src/android/app/src/main/res/layout/list_item_setting_switch.xml
index 5cb84182e..1c08e2e1b 100644
--- a/src/android/app/src/main/res/layout/list_item_setting_switch.xml
+++ b/src/android/app/src/main/res/layout/list_item_setting_switch.xml
@@ -24,7 +24,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
- android:gravity="center_vertical"
+ android:layout_gravity="center_vertical"
android:orientation="vertical"
android:layout_weight="1">
diff --git a/src/android/app/src/main/res/menu/menu_overlay_options.xml b/src/android/app/src/main/res/menu/menu_overlay_options.xml
index 4885b4f6f..363781652 100644
--- a/src/android/app/src/main/res/menu/menu_overlay_options.xml
+++ b/src/android/app/src/main/res/menu/menu_overlay_options.xml
@@ -39,6 +39,11 @@
android:checkable="true" />
<item
+ android:id="@+id/menu_touchscreen"
+ android:title="@string/touchscreen"
+ android:checkable="true" />
+
+ <item
android:id="@+id/menu_reset_overlay"
android:title="@string/emulation_touch_overlay_reset" />
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml
index e3915ef4f..0363ff3b6 100644
--- a/src/android/app/src/main/res/values/arrays.xml
+++ b/src/android/app/src/main/res/values/arrays.xml
@@ -118,15 +118,23 @@
</integer-array>
<string-array name="rendererScreenLayoutNames">
+ <item>@string/screen_layout_auto</item>
+ <item>@string/screen_layout_sensor_landscape</item>
<item>@string/screen_layout_landscape</item>
+ <item>@string/screen_layout_reverse_landscape</item>
+ <item>@string/screen_layout_sensor_portrait</item>
<item>@string/screen_layout_portrait</item>
- <item>@string/screen_layout_auto</item>
+ <item>@string/screen_layout_reverse_portrait</item>
</string-array>
<integer-array name="rendererScreenLayoutValues">
+ <item>0</item>
<item>5</item>
+ <item>1</item>
+ <item>2</item>
+ <item>6</item>
<item>4</item>
- <item>0</item>
+ <item>3</item>
</integer-array>
<string-array name="rendererAspectRatioNames">
@@ -212,19 +220,19 @@
<item>B</item>
<item>X</item>
<item>Y</item>
+ <item>+</item>
+ <item>-</item>
+ <item>@string/gamepad_home</item>
+ <item>@string/gamepad_screenshot</item>
<item>L</item>
<item>R</item>
<item>ZL</item>
<item>ZR</item>
- <item>+</item>
- <item>-</item>
- <item>@string/gamepad_d_pad</item>
<item>@string/gamepad_left_stick</item>
<item>@string/gamepad_right_stick</item>
<item>L3</item>
<item>R3</item>
- <item>@string/gamepad_home</item>
- <item>@string/gamepad_screenshot</item>
+ <item>@string/gamepad_d_pad</item>
</string-array>
<string-array name="themeEntries">
@@ -267,4 +275,21 @@
<item>3</item>
</integer-array>
+ <string-array name="anisoEntries">
+ <item>@string/auto</item>
+ <item>@string/slider_default</item>
+ <item>@string/multiplier_two</item>
+ <item>@string/multiplier_four</item>
+ <item>@string/multiplier_eight</item>
+ <item>@string/multiplier_sixteen</item>
+ </string-array>
+ <integer-array name="anisoValues">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ </integer-array>
+
</resources>
diff --git a/src/android/app/src/main/res/values/integers.xml b/src/android/app/src/main/res/values/integers.xml
index dc527965c..1c6f5db93 100644
--- a/src/android/app/src/main/res/values/integers.xml
+++ b/src/android/app/src/main/res/values/integers.xml
@@ -3,111 +3,111 @@
<integer name="grid_columns">1</integer>
<!-- Default SWITCH landscape layout -->
- <integer name="SWITCH_BUTTON_A_X">760</integer>
- <integer name="SWITCH_BUTTON_A_Y">790</integer>
- <integer name="SWITCH_BUTTON_B_X">710</integer>
- <integer name="SWITCH_BUTTON_B_Y">900</integer>
- <integer name="SWITCH_BUTTON_X_X">710</integer>
- <integer name="SWITCH_BUTTON_X_Y">680</integer>
- <integer name="SWITCH_BUTTON_Y_X">660</integer>
- <integer name="SWITCH_BUTTON_Y_Y">790</integer>
- <integer name="SWITCH_STICK_L_X">100</integer>
- <integer name="SWITCH_STICK_L_Y">670</integer>
- <integer name="SWITCH_STICK_R_X">900</integer>
- <integer name="SWITCH_STICK_R_Y">670</integer>
- <integer name="SWITCH_TRIGGER_L_X">70</integer>
- <integer name="SWITCH_TRIGGER_L_Y">220</integer>
- <integer name="SWITCH_TRIGGER_R_X">930</integer>
- <integer name="SWITCH_TRIGGER_R_Y">220</integer>
- <integer name="SWITCH_TRIGGER_ZL_X">70</integer>
- <integer name="SWITCH_TRIGGER_ZL_Y">90</integer>
- <integer name="SWITCH_TRIGGER_ZR_X">930</integer>
- <integer name="SWITCH_TRIGGER_ZR_Y">90</integer>
- <integer name="SWITCH_BUTTON_MINUS_X">460</integer>
- <integer name="SWITCH_BUTTON_MINUS_Y">950</integer>
- <integer name="SWITCH_BUTTON_PLUS_X">540</integer>
- <integer name="SWITCH_BUTTON_PLUS_Y">950</integer>
- <integer name="SWITCH_BUTTON_HOME_X">600</integer>
- <integer name="SWITCH_BUTTON_HOME_Y">950</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_X">400</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_Y">950</integer>
- <integer name="SWITCH_BUTTON_DPAD_X">260</integer>
- <integer name="SWITCH_BUTTON_DPAD_Y">790</integer>
- <integer name="SWITCH_BUTTON_STICK_L_X">870</integer>
- <integer name="SWITCH_BUTTON_STICK_L_Y">400</integer>
- <integer name="SWITCH_BUTTON_STICK_R_X">960</integer>
- <integer name="SWITCH_BUTTON_STICK_R_Y">430</integer>
+ <integer name="BUTTON_A_X">760</integer>
+ <integer name="BUTTON_A_Y">790</integer>
+ <integer name="BUTTON_B_X">710</integer>
+ <integer name="BUTTON_B_Y">900</integer>
+ <integer name="BUTTON_X_X">710</integer>
+ <integer name="BUTTON_X_Y">680</integer>
+ <integer name="BUTTON_Y_X">660</integer>
+ <integer name="BUTTON_Y_Y">790</integer>
+ <integer name="BUTTON_PLUS_X">540</integer>
+ <integer name="BUTTON_PLUS_Y">950</integer>
+ <integer name="BUTTON_MINUS_X">460</integer>
+ <integer name="BUTTON_MINUS_Y">950</integer>
+ <integer name="BUTTON_HOME_X">600</integer>
+ <integer name="BUTTON_HOME_Y">950</integer>
+ <integer name="BUTTON_CAPTURE_X">400</integer>
+ <integer name="BUTTON_CAPTURE_Y">950</integer>
+ <integer name="BUTTON_L_X">70</integer>
+ <integer name="BUTTON_L_Y">220</integer>
+ <integer name="BUTTON_R_X">930</integer>
+ <integer name="BUTTON_R_Y">220</integer>
+ <integer name="BUTTON_ZL_X">70</integer>
+ <integer name="BUTTON_ZL_Y">90</integer>
+ <integer name="BUTTON_ZR_X">930</integer>
+ <integer name="BUTTON_ZR_Y">90</integer>
+ <integer name="BUTTON_STICK_L_X">870</integer>
+ <integer name="BUTTON_STICK_L_Y">400</integer>
+ <integer name="BUTTON_STICK_R_X">960</integer>
+ <integer name="BUTTON_STICK_R_Y">430</integer>
+ <integer name="STICK_L_X">100</integer>
+ <integer name="STICK_L_Y">670</integer>
+ <integer name="STICK_R_X">900</integer>
+ <integer name="STICK_R_Y">670</integer>
+ <integer name="COMBINED_DPAD_X">260</integer>
+ <integer name="COMBINED_DPAD_Y">790</integer>
<!-- Default SWITCH portrait layout -->
- <integer name="SWITCH_BUTTON_A_X_PORTRAIT">840</integer>
- <integer name="SWITCH_BUTTON_A_Y_PORTRAIT">840</integer>
- <integer name="SWITCH_BUTTON_B_X_PORTRAIT">740</integer>
- <integer name="SWITCH_BUTTON_B_Y_PORTRAIT">880</integer>
- <integer name="SWITCH_BUTTON_X_X_PORTRAIT">740</integer>
- <integer name="SWITCH_BUTTON_X_Y_PORTRAIT">800</integer>
- <integer name="SWITCH_BUTTON_Y_X_PORTRAIT">640</integer>
- <integer name="SWITCH_BUTTON_Y_Y_PORTRAIT">840</integer>
- <integer name="SWITCH_STICK_L_X_PORTRAIT">180</integer>
- <integer name="SWITCH_STICK_L_Y_PORTRAIT">660</integer>
- <integer name="SWITCH_STICK_R_X_PORTRAIT">820</integer>
- <integer name="SWITCH_STICK_R_Y_PORTRAIT">660</integer>
- <integer name="SWITCH_TRIGGER_L_X_PORTRAIT">140</integer>
- <integer name="SWITCH_TRIGGER_L_Y_PORTRAIT">260</integer>
- <integer name="SWITCH_TRIGGER_R_X_PORTRAIT">860</integer>
- <integer name="SWITCH_TRIGGER_R_Y_PORTRAIT">260</integer>
- <integer name="SWITCH_TRIGGER_ZL_X_PORTRAIT">140</integer>
- <integer name="SWITCH_TRIGGER_ZL_Y_PORTRAIT">200</integer>
- <integer name="SWITCH_TRIGGER_ZR_X_PORTRAIT">860</integer>
- <integer name="SWITCH_TRIGGER_ZR_Y_PORTRAIT">200</integer>
- <integer name="SWITCH_BUTTON_MINUS_X_PORTRAIT">440</integer>
- <integer name="SWITCH_BUTTON_MINUS_Y_PORTRAIT">950</integer>
- <integer name="SWITCH_BUTTON_PLUS_X_PORTRAIT">560</integer>
- <integer name="SWITCH_BUTTON_PLUS_Y_PORTRAIT">950</integer>
- <integer name="SWITCH_BUTTON_HOME_X_PORTRAIT">680</integer>
- <integer name="SWITCH_BUTTON_HOME_Y_PORTRAIT">950</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_X_PORTRAIT">320</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_Y_PORTRAIT">950</integer>
- <integer name="SWITCH_BUTTON_DPAD_X_PORTRAIT">240</integer>
- <integer name="SWITCH_BUTTON_DPAD_Y_PORTRAIT">840</integer>
- <integer name="SWITCH_BUTTON_STICK_L_X_PORTRAIT">730</integer>
- <integer name="SWITCH_BUTTON_STICK_L_Y_PORTRAIT">510</integer>
- <integer name="SWITCH_BUTTON_STICK_R_X_PORTRAIT">900</integer>
- <integer name="SWITCH_BUTTON_STICK_R_Y_PORTRAIT">540</integer>
+ <integer name="BUTTON_A_X_PORTRAIT">840</integer>
+ <integer name="BUTTON_A_Y_PORTRAIT">840</integer>
+ <integer name="BUTTON_B_X_PORTRAIT">740</integer>
+ <integer name="BUTTON_B_Y_PORTRAIT">880</integer>
+ <integer name="BUTTON_X_X_PORTRAIT">740</integer>
+ <integer name="BUTTON_X_Y_PORTRAIT">800</integer>
+ <integer name="BUTTON_Y_X_PORTRAIT">640</integer>
+ <integer name="BUTTON_Y_Y_PORTRAIT">840</integer>
+ <integer name="BUTTON_PLUS_Y_PORTRAIT">950</integer>
+ <integer name="BUTTON_MINUS_X_PORTRAIT">440</integer>
+ <integer name="BUTTON_MINUS_Y_PORTRAIT">950</integer>
+ <integer name="BUTTON_HOME_X_PORTRAIT">680</integer>
+ <integer name="BUTTON_HOME_Y_PORTRAIT">950</integer>
+ <integer name="BUTTON_CAPTURE_X_PORTRAIT">320</integer>
+ <integer name="BUTTON_CAPTURE_Y_PORTRAIT">950</integer>
+ <integer name="BUTTON_L_X_PORTRAIT">140</integer>
+ <integer name="BUTTON_L_Y_PORTRAIT">260</integer>
+ <integer name="BUTTON_R_X_PORTRAIT">860</integer>
+ <integer name="BUTTON_R_Y_PORTRAIT">260</integer>
+ <integer name="BUTTON_ZL_X_PORTRAIT">140</integer>
+ <integer name="BUTTON_ZL_Y_PORTRAIT">200</integer>
+ <integer name="BUTTON_ZR_X_PORTRAIT">860</integer>
+ <integer name="BUTTON_ZR_Y_PORTRAIT">200</integer>
+ <integer name="BUTTON_PLUS_X_PORTRAIT">560</integer>
+ <integer name="BUTTON_STICK_L_X_PORTRAIT">730</integer>
+ <integer name="BUTTON_STICK_L_Y_PORTRAIT">510</integer>
+ <integer name="BUTTON_STICK_R_X_PORTRAIT">900</integer>
+ <integer name="BUTTON_STICK_R_Y_PORTRAIT">540</integer>
+ <integer name="STICK_L_X_PORTRAIT">180</integer>
+ <integer name="STICK_L_Y_PORTRAIT">660</integer>
+ <integer name="STICK_R_X_PORTRAIT">820</integer>
+ <integer name="STICK_R_Y_PORTRAIT">660</integer>
+ <integer name="COMBINED_DPAD_X_PORTRAIT">240</integer>
+ <integer name="COMBINED_DPAD_Y_PORTRAIT">840</integer>
<!-- Default SWITCH foldable layout -->
- <integer name="SWITCH_BUTTON_A_X_FOLDABLE">840</integer>
- <integer name="SWITCH_BUTTON_A_Y_FOLDABLE">390</integer>
- <integer name="SWITCH_BUTTON_B_X_FOLDABLE">740</integer>
- <integer name="SWITCH_BUTTON_B_Y_FOLDABLE">430</integer>
- <integer name="SWITCH_BUTTON_X_X_FOLDABLE">740</integer>
- <integer name="SWITCH_BUTTON_X_Y_FOLDABLE">350</integer>
- <integer name="SWITCH_BUTTON_Y_X_FOLDABLE">640</integer>
- <integer name="SWITCH_BUTTON_Y_Y_FOLDABLE">390</integer>
- <integer name="SWITCH_STICK_L_X_FOLDABLE">180</integer>
- <integer name="SWITCH_STICK_L_Y_FOLDABLE">250</integer>
- <integer name="SWITCH_STICK_R_X_FOLDABLE">820</integer>
- <integer name="SWITCH_STICK_R_Y_FOLDABLE">250</integer>
- <integer name="SWITCH_TRIGGER_L_X_FOLDABLE">140</integer>
- <integer name="SWITCH_TRIGGER_L_Y_FOLDABLE">130</integer>
- <integer name="SWITCH_TRIGGER_R_X_FOLDABLE">860</integer>
- <integer name="SWITCH_TRIGGER_R_Y_FOLDABLE">130</integer>
- <integer name="SWITCH_TRIGGER_ZL_X_FOLDABLE">140</integer>
- <integer name="SWITCH_TRIGGER_ZL_Y_FOLDABLE">70</integer>
- <integer name="SWITCH_TRIGGER_ZR_X_FOLDABLE">860</integer>
- <integer name="SWITCH_TRIGGER_ZR_Y_FOLDABLE">70</integer>
- <integer name="SWITCH_BUTTON_MINUS_X_FOLDABLE">440</integer>
- <integer name="SWITCH_BUTTON_MINUS_Y_FOLDABLE">470</integer>
- <integer name="SWITCH_BUTTON_PLUS_X_FOLDABLE">560</integer>
- <integer name="SWITCH_BUTTON_PLUS_Y_FOLDABLE">470</integer>
- <integer name="SWITCH_BUTTON_HOME_X_FOLDABLE">680</integer>
- <integer name="SWITCH_BUTTON_HOME_Y_FOLDABLE">470</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_X_FOLDABLE">320</integer>
- <integer name="SWITCH_BUTTON_CAPTURE_Y_FOLDABLE">470</integer>
- <integer name="SWITCH_BUTTON_DPAD_X_FOLDABLE">240</integer>
- <integer name="SWITCH_BUTTON_DPAD_Y_FOLDABLE">390</integer>
- <integer name="SWITCH_BUTTON_STICK_L_X_FOLDABLE">550</integer>
- <integer name="SWITCH_BUTTON_STICK_L_Y_FOLDABLE">210</integer>
- <integer name="SWITCH_BUTTON_STICK_R_X_FOLDABLE">550</integer>
- <integer name="SWITCH_BUTTON_STICK_R_Y_FOLDABLE">280</integer>
+ <integer name="BUTTON_A_X_FOLDABLE">840</integer>
+ <integer name="BUTTON_A_Y_FOLDABLE">390</integer>
+ <integer name="BUTTON_B_X_FOLDABLE">740</integer>
+ <integer name="BUTTON_B_Y_FOLDABLE">430</integer>
+ <integer name="BUTTON_X_X_FOLDABLE">740</integer>
+ <integer name="BUTTON_X_Y_FOLDABLE">350</integer>
+ <integer name="BUTTON_Y_X_FOLDABLE">640</integer>
+ <integer name="BUTTON_Y_Y_FOLDABLE">390</integer>
+ <integer name="BUTTON_PLUS_X_FOLDABLE">560</integer>
+ <integer name="BUTTON_PLUS_Y_FOLDABLE">470</integer>
+ <integer name="BUTTON_MINUS_X_FOLDABLE">440</integer>
+ <integer name="BUTTON_MINUS_Y_FOLDABLE">470</integer>
+ <integer name="BUTTON_HOME_X_FOLDABLE">680</integer>
+ <integer name="BUTTON_HOME_Y_FOLDABLE">470</integer>
+ <integer name="BUTTON_CAPTURE_X_FOLDABLE">320</integer>
+ <integer name="BUTTON_CAPTURE_Y_FOLDABLE">470</integer>
+ <integer name="BUTTON_L_X_FOLDABLE">140</integer>
+ <integer name="BUTTON_L_Y_FOLDABLE">130</integer>
+ <integer name="BUTTON_R_X_FOLDABLE">860</integer>
+ <integer name="BUTTON_R_Y_FOLDABLE">130</integer>
+ <integer name="BUTTON_ZL_X_FOLDABLE">140</integer>
+ <integer name="BUTTON_ZL_Y_FOLDABLE">70</integer>
+ <integer name="BUTTON_ZR_X_FOLDABLE">860</integer>
+ <integer name="BUTTON_ZR_Y_FOLDABLE">70</integer>
+ <integer name="BUTTON_STICK_L_X_FOLDABLE">550</integer>
+ <integer name="BUTTON_STICK_L_Y_FOLDABLE">210</integer>
+ <integer name="BUTTON_STICK_R_X_FOLDABLE">550</integer>
+ <integer name="BUTTON_STICK_R_Y_FOLDABLE">280</integer>
+ <integer name="STICK_L_X_FOLDABLE">180</integer>
+ <integer name="STICK_L_Y_FOLDABLE">250</integer>
+ <integer name="STICK_R_X_FOLDABLE">820</integer>
+ <integer name="STICK_R_Y_FOLDABLE">250</integer>
+ <integer name="COMBINED_DPAD_X_FOLDABLE">240</integer>
+ <integer name="COMBINED_DPAD_Y_FOLDABLE">390</integer>
</resources>
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 0b80b04a4..83aa1b781 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -225,6 +225,8 @@
<string name="renderer_reactive_flushing_description">Improves rendering accuracy in some games at the cost of performance.</string>
<string name="use_disk_shader_cache">Disk shader cache</string>
<string name="use_disk_shader_cache_description">Reduces stuttering by locally storing and loading generated shaders.</string>
+ <string name="anisotropic_filtering">Anisotropic filtering</string>
+ <string name="anisotropic_filtering_description">Improves the quality of textures when viewed at oblique angles</string>
<!-- Debug settings strings -->
<string name="cpu">CPU</string>
@@ -364,6 +366,7 @@
<string name="emulation_pause">Pause emulation</string>
<string name="emulation_unpause">Unpause emulation</string>
<string name="emulation_input_overlay">Overlay options</string>
+ <string name="touchscreen">Touchscreen</string>
<string name="load_settings">Loading settings…</string>
@@ -460,9 +463,13 @@
<string name="anti_aliasing_smaa">SMAA</string>
<!-- Screen Layouts -->
+ <string name="screen_layout_auto">Auto</string>
+ <string name="screen_layout_sensor_landscape">Sensor landscape</string>
<string name="screen_layout_landscape">Landscape</string>
+ <string name="screen_layout_reverse_landscape">Reverse landscape</string>
+ <string name="screen_layout_sensor_portrait">Sensor portrait</string>
<string name="screen_layout_portrait">Portrait</string>
- <string name="screen_layout_auto">Auto</string>
+ <string name="screen_layout_reverse_portrait">Reverse portrait</string>
<!-- Aspect Ratios -->
<string name="ratio_default">Default (16:9)</string>
@@ -506,6 +513,12 @@
<string name="oboe">oboe</string>
<string name="cubeb">cubeb</string>
+ <!-- Anisotropic filtering options -->
+ <string name="multiplier_two">2x</string>
+ <string name="multiplier_four">4x</string>
+ <string name="multiplier_eight">8x</string>
+ <string name="multiplier_sixteen">16x</string>
+
<!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Black backgrounds</string>
<string name="use_black_backgrounds_description">When using the dark theme, apply black backgrounds.</string>
diff --git a/src/android/build.gradle.kts b/src/android/build.gradle.kts
index 51e559321..b77906ed6 100644
--- a/src/android/build.gradle.kts
+++ b/src/android/build.gradle.kts
@@ -5,7 +5,7 @@
plugins {
id("com.android.application") version "8.1.2" apply false
id("com.android.library") version "8.1.2" apply false
- id("org.jetbrains.kotlin.android") version "1.8.21" apply false
+ id("org.jetbrains.kotlin.android") version "1.9.20" apply false
}
tasks.register("clean").configure {
diff --git a/src/audio_core/device/device_session.cpp b/src/audio_core/device/device_session.cpp
index c41d9d1ea..ee42ae529 100644
--- a/src/audio_core/device/device_session.cpp
+++ b/src/audio_core/device/device_session.cpp
@@ -18,9 +18,7 @@ constexpr auto INCREMENT_TIME{5ms};
DeviceSession::DeviceSession(Core::System& system_)
: system{system_}, thread_event{Core::Timing::CreateEvent(
"AudioOutSampleTick",
- [this](std::uintptr_t, s64 time, std::chrono::nanoseconds) {
- return ThreadFunc();
- })} {}
+ [this](s64 time, std::chrono::nanoseconds) { return ThreadFunc(); })} {}
DeviceSession::~DeviceSession() {
Finalize();
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index b58a7073f..8c57d47c6 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -64,6 +64,8 @@ add_library(common STATIC
fs/path_util.cpp
fs/path_util.h
hash.h
+ heap_tracker.cpp
+ heap_tracker.h
hex_util.cpp
hex_util.h
host_memory.cpp
diff --git a/src/common/assert.cpp b/src/common/assert.cpp
index 6026b7dc2..e2c2cade3 100644
--- a/src/common/assert.cpp
+++ b/src/common/assert.cpp
@@ -3,16 +3,19 @@
#include "common/assert.h"
#include "common/common_funcs.h"
+#include "common/logging/backend.h"
#include "common/settings.h"
void assert_fail_impl() {
if (Settings::values.use_debug_asserts) {
+ Common::Log::Stop();
Crash();
}
}
[[noreturn]] void unreachable_impl() {
+ Common::Log::Stop();
Crash();
throw std::runtime_error("Unreachable code");
}
diff --git a/src/common/heap_tracker.cpp b/src/common/heap_tracker.cpp
new file mode 100644
index 000000000..683208795
--- /dev/null
+++ b/src/common/heap_tracker.cpp
@@ -0,0 +1,281 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <fstream>
+#include <vector>
+
+#include "common/heap_tracker.h"
+#include "common/logging/log.h"
+
+namespace Common {
+
+namespace {
+
+s64 GetMaxPermissibleResidentMapCount() {
+ // Default value.
+ s64 value = 65530;
+
+ // Try to read how many mappings we can make.
+ std::ifstream s("/proc/sys/vm/max_map_count");
+ s >> value;
+
+ // Print, for debug.
+ LOG_INFO(HW_Memory, "Current maximum map count: {}", value);
+
+ // Allow 20000 maps for other code and to account for split inaccuracy.
+ return std::max<s64>(value - 20000, 0);
+}
+
+} // namespace
+
+HeapTracker::HeapTracker(Common::HostMemory& buffer)
+ : m_buffer(buffer), m_max_resident_map_count(GetMaxPermissibleResidentMapCount()) {}
+HeapTracker::~HeapTracker() = default;
+
+void HeapTracker::Map(size_t virtual_offset, size_t host_offset, size_t length,
+ MemoryPermission perm, bool is_separate_heap) {
+ // When mapping other memory, map pages immediately.
+ if (!is_separate_heap) {
+ m_buffer.Map(virtual_offset, host_offset, length, perm, false);
+ return;
+ }
+
+ {
+ // We are mapping part of a separate heap.
+ std::scoped_lock lk{m_lock};
+
+ auto* const map = new SeparateHeapMap{
+ .vaddr = virtual_offset,
+ .paddr = host_offset,
+ .size = length,
+ .tick = m_tick++,
+ .perm = perm,
+ .is_resident = false,
+ };
+
+ // Insert into mappings.
+ m_map_count++;
+ m_mappings.insert(*map);
+ }
+
+ // Finally, map.
+ this->DeferredMapSeparateHeap(virtual_offset);
+}
+
+void HeapTracker::Unmap(size_t virtual_offset, size_t size, bool is_separate_heap) {
+ // If this is a separate heap...
+ if (is_separate_heap) {
+ std::scoped_lock lk{m_lock};
+
+ const SeparateHeapMap key{
+ .vaddr = virtual_offset,
+ };
+
+ // Split at the boundaries of the region we are removing.
+ this->SplitHeapMapLocked(virtual_offset);
+ this->SplitHeapMapLocked(virtual_offset + size);
+
+ // Erase all mappings in range.
+ auto it = m_mappings.find(key);
+ while (it != m_mappings.end() && it->vaddr < virtual_offset + size) {
+ // Get underlying item.
+ auto* const item = std::addressof(*it);
+
+ // If resident, erase from resident map.
+ if (item->is_resident) {
+ ASSERT(--m_resident_map_count >= 0);
+ m_resident_mappings.erase(m_resident_mappings.iterator_to(*item));
+ }
+
+ // Erase from map.
+ ASSERT(--m_map_count >= 0);
+ it = m_mappings.erase(it);
+
+ // Free the item.
+ delete item;
+ }
+ }
+
+ // Unmap pages.
+ m_buffer.Unmap(virtual_offset, size, false);
+}
+
+void HeapTracker::Protect(size_t virtual_offset, size_t size, MemoryPermission perm) {
+ // Ensure no rebuild occurs while reprotecting.
+ std::shared_lock lk{m_rebuild_lock};
+
+ // Split at the boundaries of the region we are reprotecting.
+ this->SplitHeapMap(virtual_offset, size);
+
+ // Declare tracking variables.
+ const VAddr end = virtual_offset + size;
+ VAddr cur = virtual_offset;
+
+ while (cur < end) {
+ VAddr next = cur;
+ bool should_protect = false;
+
+ {
+ std::scoped_lock lk2{m_lock};
+
+ const SeparateHeapMap key{
+ .vaddr = next,
+ };
+
+ // Try to get the next mapping corresponding to this address.
+ const auto it = m_mappings.nfind(key);
+
+ if (it == m_mappings.end()) {
+ // There are no separate heap mappings remaining.
+ next = end;
+ should_protect = true;
+ } else if (it->vaddr == cur) {
+ // We are in range.
+ // Update permission bits.
+ it->perm = perm;
+
+ // Determine next address and whether we should protect.
+ next = cur + it->size;
+ should_protect = it->is_resident;
+ } else /* if (it->vaddr > cur) */ {
+ // We weren't in range, but there is a block coming up that will be.
+ next = it->vaddr;
+ should_protect = true;
+ }
+ }
+
+ // Clamp to end.
+ next = std::min(next, end);
+
+ // Reprotect, if we need to.
+ if (should_protect) {
+ m_buffer.Protect(cur, next - cur, perm);
+ }
+
+ // Advance.
+ cur = next;
+ }
+}
+
+bool HeapTracker::DeferredMapSeparateHeap(u8* fault_address) {
+ if (m_buffer.IsInVirtualRange(fault_address)) {
+ return this->DeferredMapSeparateHeap(fault_address - m_buffer.VirtualBasePointer());
+ }
+
+ return false;
+}
+
+bool HeapTracker::DeferredMapSeparateHeap(size_t virtual_offset) {
+ bool rebuild_required = false;
+
+ {
+ std::scoped_lock lk{m_lock};
+
+ // Check to ensure this was a non-resident separate heap mapping.
+ const auto it = this->GetNearestHeapMapLocked(virtual_offset);
+ if (it == m_mappings.end() || it->is_resident) {
+ return false;
+ }
+
+ // Update tick before possible rebuild.
+ it->tick = m_tick++;
+
+ // Check if we need to rebuild.
+ if (m_resident_map_count > m_max_resident_map_count) {
+ rebuild_required = true;
+ }
+
+ // Map the area.
+ m_buffer.Map(it->vaddr, it->paddr, it->size, it->perm, false);
+
+ // This map is now resident.
+ it->is_resident = true;
+ m_resident_map_count++;
+ m_resident_mappings.insert(*it);
+ }
+
+ if (rebuild_required) {
+ // A rebuild was required, so perform it now.
+ this->RebuildSeparateHeapAddressSpace();
+ }
+
+ return true;
+}
+
+void HeapTracker::RebuildSeparateHeapAddressSpace() {
+ std::scoped_lock lk{m_rebuild_lock, m_lock};
+
+ ASSERT(!m_resident_mappings.empty());
+
+ // Dump half of the mappings.
+ //
+ // Despite being worse in theory, this has proven to be better in practice than more
+ // regularly dumping a smaller amount, because it significantly reduces average case
+ // lock contention.
+ const size_t desired_count = std::min(m_resident_map_count, m_max_resident_map_count) / 2;
+ const size_t evict_count = m_resident_map_count - desired_count;
+ auto it = m_resident_mappings.begin();
+
+ for (size_t i = 0; i < evict_count && it != m_resident_mappings.end(); i++) {
+ // Unmark and unmap.
+ it->is_resident = false;
+ m_buffer.Unmap(it->vaddr, it->size, false);
+
+ // Advance.
+ ASSERT(--m_resident_map_count >= 0);
+ it = m_resident_mappings.erase(it);
+ }
+}
+
+void HeapTracker::SplitHeapMap(VAddr offset, size_t size) {
+ std::scoped_lock lk{m_lock};
+
+ this->SplitHeapMapLocked(offset);
+ this->SplitHeapMapLocked(offset + size);
+}
+
+void HeapTracker::SplitHeapMapLocked(VAddr offset) {
+ const auto it = this->GetNearestHeapMapLocked(offset);
+ if (it == m_mappings.end() || it->vaddr == offset) {
+ // Not contained or no split required.
+ return;
+ }
+
+ // Cache the original values.
+ auto* const left = std::addressof(*it);
+ const size_t orig_size = left->size;
+
+ // Adjust the left map.
+ const size_t left_size = offset - left->vaddr;
+ left->size = left_size;
+
+ // Create the new right map.
+ auto* const right = new SeparateHeapMap{
+ .vaddr = left->vaddr + left_size,
+ .paddr = left->paddr + left_size,
+ .size = orig_size - left_size,
+ .tick = left->tick,
+ .perm = left->perm,
+ .is_resident = left->is_resident,
+ };
+
+ // Insert the new right map.
+ m_map_count++;
+ m_mappings.insert(*right);
+
+ // If resident, also insert into resident map.
+ if (right->is_resident) {
+ m_resident_map_count++;
+ m_resident_mappings.insert(*right);
+ }
+}
+
+HeapTracker::AddrTree::iterator HeapTracker::GetNearestHeapMapLocked(VAddr offset) {
+ const SeparateHeapMap key{
+ .vaddr = offset,
+ };
+
+ return m_mappings.find(key);
+}
+
+} // namespace Common
diff --git a/src/common/heap_tracker.h b/src/common/heap_tracker.h
new file mode 100644
index 000000000..ee5b0bf43
--- /dev/null
+++ b/src/common/heap_tracker.h
@@ -0,0 +1,98 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <atomic>
+#include <mutex>
+#include <set>
+#include <shared_mutex>
+
+#include "common/host_memory.h"
+#include "common/intrusive_red_black_tree.h"
+
+namespace Common {
+
+struct SeparateHeapMap {
+ Common::IntrusiveRedBlackTreeNode addr_node{};
+ Common::IntrusiveRedBlackTreeNode tick_node{};
+ VAddr vaddr{};
+ PAddr paddr{};
+ size_t size{};
+ size_t tick{};
+ MemoryPermission perm{};
+ bool is_resident{};
+};
+
+struct SeparateHeapMapAddrComparator {
+ static constexpr int Compare(const SeparateHeapMap& lhs, const SeparateHeapMap& rhs) {
+ if (lhs.vaddr < rhs.vaddr) {
+ return -1;
+ } else if (lhs.vaddr <= (rhs.vaddr + rhs.size - 1)) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+};
+
+struct SeparateHeapMapTickComparator {
+ static constexpr int Compare(const SeparateHeapMap& lhs, const SeparateHeapMap& rhs) {
+ if (lhs.tick < rhs.tick) {
+ return -1;
+ } else if (lhs.tick > rhs.tick) {
+ return 1;
+ } else {
+ return SeparateHeapMapAddrComparator::Compare(lhs, rhs);
+ }
+ }
+};
+
+class HeapTracker {
+public:
+ explicit HeapTracker(Common::HostMemory& buffer);
+ ~HeapTracker();
+
+ void Map(size_t virtual_offset, size_t host_offset, size_t length, MemoryPermission perm,
+ bool is_separate_heap);
+ void Unmap(size_t virtual_offset, size_t size, bool is_separate_heap);
+ void Protect(size_t virtual_offset, size_t length, MemoryPermission perm);
+ u8* VirtualBasePointer() {
+ return m_buffer.VirtualBasePointer();
+ }
+
+ bool DeferredMapSeparateHeap(u8* fault_address);
+ bool DeferredMapSeparateHeap(size_t virtual_offset);
+
+private:
+ using AddrTreeTraits =
+ Common::IntrusiveRedBlackTreeMemberTraitsDeferredAssert<&SeparateHeapMap::addr_node>;
+ using AddrTree = AddrTreeTraits::TreeType<SeparateHeapMapAddrComparator>;
+
+ using TickTreeTraits =
+ Common::IntrusiveRedBlackTreeMemberTraitsDeferredAssert<&SeparateHeapMap::tick_node>;
+ using TickTree = TickTreeTraits::TreeType<SeparateHeapMapTickComparator>;
+
+ AddrTree m_mappings{};
+ TickTree m_resident_mappings{};
+
+private:
+ void SplitHeapMap(VAddr offset, size_t size);
+ void SplitHeapMapLocked(VAddr offset);
+
+ AddrTree::iterator GetNearestHeapMapLocked(VAddr offset);
+
+ void RebuildSeparateHeapAddressSpace();
+
+private:
+ Common::HostMemory& m_buffer;
+ const s64 m_max_resident_map_count;
+
+ std::shared_mutex m_rebuild_lock{};
+ std::mutex m_lock{};
+ s64 m_map_count{};
+ s64 m_resident_map_count{};
+ size_t m_tick{};
+};
+
+} // namespace Common
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp
index e540375b8..860c39e6a 100644
--- a/src/common/host_memory.cpp
+++ b/src/common/host_memory.cpp
@@ -679,7 +679,7 @@ HostMemory::HostMemory(HostMemory&&) noexcept = default;
HostMemory& HostMemory::operator=(HostMemory&&) noexcept = default;
void HostMemory::Map(size_t virtual_offset, size_t host_offset, size_t length,
- MemoryPermission perms) {
+ MemoryPermission perms, bool separate_heap) {
ASSERT(virtual_offset % PageAlignment == 0);
ASSERT(host_offset % PageAlignment == 0);
ASSERT(length % PageAlignment == 0);
@@ -691,7 +691,7 @@ void HostMemory::Map(size_t virtual_offset, size_t host_offset, size_t length,
impl->Map(virtual_offset + virtual_base_offset, host_offset, length, perms);
}
-void HostMemory::Unmap(size_t virtual_offset, size_t length) {
+void HostMemory::Unmap(size_t virtual_offset, size_t length, bool separate_heap) {
ASSERT(virtual_offset % PageAlignment == 0);
ASSERT(length % PageAlignment == 0);
ASSERT(virtual_offset + length <= virtual_size);
@@ -701,14 +701,16 @@ void HostMemory::Unmap(size_t virtual_offset, size_t length) {
impl->Unmap(virtual_offset + virtual_base_offset, length);
}
-void HostMemory::Protect(size_t virtual_offset, size_t length, bool read, bool write,
- bool execute) {
+void HostMemory::Protect(size_t virtual_offset, size_t length, MemoryPermission perm) {
ASSERT(virtual_offset % PageAlignment == 0);
ASSERT(length % PageAlignment == 0);
ASSERT(virtual_offset + length <= virtual_size);
if (length == 0 || !virtual_base || !impl) {
return;
}
+ const bool read = True(perm & MemoryPermission::Read);
+ const bool write = True(perm & MemoryPermission::Write);
+ const bool execute = True(perm & MemoryPermission::Execute);
impl->Protect(virtual_offset + virtual_base_offset, length, read, write, execute);
}
diff --git a/src/common/host_memory.h b/src/common/host_memory.h
index 747c5850c..72fbb05af 100644
--- a/src/common/host_memory.h
+++ b/src/common/host_memory.h
@@ -40,11 +40,12 @@ public:
HostMemory(HostMemory&& other) noexcept;
HostMemory& operator=(HostMemory&& other) noexcept;
- void Map(size_t virtual_offset, size_t host_offset, size_t length, MemoryPermission perms);
+ void Map(size_t virtual_offset, size_t host_offset, size_t length, MemoryPermission perms,
+ bool separate_heap);
- void Unmap(size_t virtual_offset, size_t length);
+ void Unmap(size_t virtual_offset, size_t length, bool separate_heap);
- void Protect(size_t virtual_offset, size_t length, bool read, bool write, bool execute = false);
+ void Protect(size_t virtual_offset, size_t length, MemoryPermission perms);
void EnableDirectMappedAddress();
@@ -64,6 +65,10 @@ public:
return virtual_base;
}
+ bool IsInVirtualRange(void* address) const noexcept {
+ return address >= virtual_base && address < virtual_base + virtual_size;
+ }
+
private:
size_t backing_size{};
size_t virtual_size{};
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
index d4f27197c..7a267f8c0 100644
--- a/src/common/logging/backend.cpp
+++ b/src/common/logging/backend.cpp
@@ -208,6 +208,10 @@ public:
instance->StartBackendThread();
}
+ static void Stop() {
+ instance->StopBackendThread();
+ }
+
Impl(const Impl&) = delete;
Impl& operator=(const Impl&) = delete;
@@ -259,6 +263,15 @@ private:
});
}
+ void StopBackendThread() {
+ backend_thread.request_stop();
+ if (backend_thread.joinable()) {
+ backend_thread.join();
+ }
+
+ ForEachBackend([](Backend& backend) { backend.Flush(); });
+ }
+
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;
@@ -313,6 +326,10 @@ void Start() {
Impl::Start();
}
+void Stop() {
+ Impl::Stop();
+}
+
void DisableLoggingInTests() {
initialization_in_progress_suppress_logging = true;
}
diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h
index 12e5e2498..2a9926e9e 100644
--- a/src/common/logging/backend.h
+++ b/src/common/logging/backend.h
@@ -14,6 +14,9 @@ void Initialize();
void Start();
+/// Explicitly stops the logger thread and flushes the buffers
+void Stop();
+
void DisableLoggingInTests();
/**
diff --git a/src/common/ring_buffer.h b/src/common/ring_buffer.h
index 5c961b202..e7e9fdb38 100644
--- a/src/common/ring_buffer.h
+++ b/src/common/ring_buffer.h
@@ -103,7 +103,7 @@ private:
// Having them on the same cache-line would result in false-sharing between them.
// TODO: Remove this ifdef whenever clang and GCC support
// std::hardware_destructive_interference_size.
-#if defined(_MSC_VER) && _MSC_VER >= 1911
+#ifdef __cpp_lib_hardware_interference_size
alignas(std::hardware_destructive_interference_size) std::atomic_size_t m_read_index{0};
alignas(std::hardware_destructive_interference_size) std::atomic_size_t m_write_index{0};
#else
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index ea52bbfa6..07709d4e5 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -199,6 +199,8 @@ const char* TranslateCategory(Category category) {
case Category::CpuDebug:
case Category::CpuUnsafe:
return "Cpu";
+ case Category::Overlay:
+ return "Overlay";
case Category::Renderer:
case Category::RendererAdvanced:
case Category::RendererDebug:
diff --git a/src/common/settings_common.h b/src/common/settings_common.h
index c82e17495..1a290ad77 100644
--- a/src/common/settings_common.h
+++ b/src/common/settings_common.h
@@ -18,6 +18,7 @@ enum class Category : u32 {
Cpu,
CpuDebug,
CpuUnsafe,
+ Overlay,
Renderer,
RendererAdvanced,
RendererDebug,
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 96ab39cb8..e2ec2164c 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -549,21 +549,34 @@ add_library(core STATIC
hle/service/hid/xcd.cpp
hle/service/hid/xcd.h
hle/service/hid/errors.h
+ hle/service/hid/controllers/npad/npad_data.cpp
+ hle/service/hid/controllers/npad/npad_data.h
+ hle/service/hid/controllers/npad/npad_resource.cpp
+ hle/service/hid/controllers/npad/npad_resource.h
hle/service/hid/controllers/types/debug_pad_types.h
hle/service/hid/controllers/types/keyboard_types.h
hle/service/hid/controllers/types/mouse_types.h
hle/service/hid/controllers/types/npad_types.h
+ hle/service/hid/controllers/types/shared_memory_format.h
hle/service/hid/controllers/types/touch_types.h
hle/service/hid/controllers/applet_resource.cpp
hle/service/hid/controllers/applet_resource.h
+ hle/service/hid/controllers/capture_button.cpp
+ hle/service/hid/controllers/capture_button.h
hle/service/hid/controllers/console_six_axis.cpp
hle/service/hid/controllers/console_six_axis.h
hle/service/hid/controllers/controller_base.cpp
hle/service/hid/controllers/controller_base.h
+ hle/service/hid/controllers/debug_mouse.cpp
+ hle/service/hid/controllers/debug_mouse.h
hle/service/hid/controllers/debug_pad.cpp
hle/service/hid/controllers/debug_pad.h
+ hle/service/hid/controllers/digitizer.cpp
+ hle/service/hid/controllers/digitizer.h
hle/service/hid/controllers/gesture.cpp
hle/service/hid/controllers/gesture.h
+ hle/service/hid/controllers/home_button.cpp
+ hle/service/hid/controllers/home_button.h
hle/service/hid/controllers/keyboard.cpp
hle/service/hid/controllers/keyboard.h
hle/service/hid/controllers/mouse.cpp
@@ -574,15 +587,16 @@ add_library(core STATIC
hle/service/hid/controllers/palma.h
hle/service/hid/controllers/seven_six_axis.cpp
hle/service/hid/controllers/seven_six_axis.h
- hle/service/hid/controllers/shared_memory_format.h
hle/service/hid/controllers/shared_memory_holder.cpp
hle/service/hid/controllers/shared_memory_holder.h
hle/service/hid/controllers/six_axis.cpp
hle/service/hid/controllers/six_axis.h
- hle/service/hid/controllers/stubbed.cpp
- hle/service/hid/controllers/stubbed.h
+ hle/service/hid/controllers/sleep_button.cpp
+ hle/service/hid/controllers/sleep_button.h
hle/service/hid/controllers/touchscreen.cpp
hle/service/hid/controllers/touchscreen.h
+ hle/service/hid/controllers/unique_pad.cpp
+ hle/service/hid/controllers/unique_pad.h
hle/service/hid/hidbus/hidbus_base.cpp
hle/service/hid/hidbus/hidbus_base.h
hle/service/hid/hidbus/ringcon.cpp
@@ -978,6 +992,7 @@ endif()
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
target_sources(core PRIVATE
+ arm/dynarmic/arm_dynarmic.cpp
arm/dynarmic/arm_dynarmic.h
arm/dynarmic/arm_dynarmic_64.cpp
arm/dynarmic/arm_dynarmic_64.h
@@ -987,6 +1002,8 @@ if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
arm/dynarmic/dynarmic_cp15.h
arm/dynarmic/dynarmic_exclusive_monitor.cpp
arm/dynarmic/dynarmic_exclusive_monitor.h
+ hle/service/jit/jit_code_memory.cpp
+ hle/service/jit/jit_code_memory.h
hle/service/jit/jit_context.cpp
hle/service/jit/jit_context.h
hle/service/jit/jit.cpp
diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp
index 698c9c8ad..5dc7e5d59 100644
--- a/src/core/arm/arm_interface.cpp
+++ b/src/core/arm/arm_interface.cpp
@@ -9,7 +9,7 @@
namespace Core {
-void ArmInterface::LogBacktrace(const Kernel::KProcess* process) const {
+void ArmInterface::LogBacktrace(Kernel::KProcess* process) const {
Kernel::Svc::ThreadContext ctx;
this->GetContext(ctx);
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h
index 806c7c9e9..495963eef 100644
--- a/src/core/arm/arm_interface.h
+++ b/src/core/arm/arm_interface.h
@@ -95,7 +95,7 @@ public:
virtual void SignalInterrupt(Kernel::KThread* thread) = 0;
// Stack trace generation.
- void LogBacktrace(const Kernel::KProcess* process) const;
+ void LogBacktrace(Kernel::KProcess* process) const;
// Debug functionality.
virtual const Kernel::DebugWatchpoint* HaltedWatchpoint() const = 0;
diff --git a/src/core/arm/debug.cpp b/src/core/arm/debug.cpp
index af1c34bc3..854509463 100644
--- a/src/core/arm/debug.cpp
+++ b/src/core/arm/debug.cpp
@@ -79,7 +79,7 @@ constexpr std::array<u64, 2> SegmentBases{
0x7100000000ULL,
};
-void SymbolicateBacktrace(const Kernel::KProcess* process, std::vector<BacktraceEntry>& out) {
+void SymbolicateBacktrace(Kernel::KProcess* process, std::vector<BacktraceEntry>& out) {
auto modules = FindModules(process);
const bool is_64 = process->Is64Bit();
@@ -118,7 +118,7 @@ void SymbolicateBacktrace(const Kernel::KProcess* process, std::vector<Backtrace
}
}
-std::vector<BacktraceEntry> GetAArch64Backtrace(const Kernel::KProcess* process,
+std::vector<BacktraceEntry> GetAArch64Backtrace(Kernel::KProcess* process,
const Kernel::Svc::ThreadContext& ctx) {
std::vector<BacktraceEntry> out;
auto& memory = process->GetMemory();
@@ -144,7 +144,7 @@ std::vector<BacktraceEntry> GetAArch64Backtrace(const Kernel::KProcess* process,
return out;
}
-std::vector<BacktraceEntry> GetAArch32Backtrace(const Kernel::KProcess* process,
+std::vector<BacktraceEntry> GetAArch32Backtrace(Kernel::KProcess* process,
const Kernel::Svc::ThreadContext& ctx) {
std::vector<BacktraceEntry> out;
auto& memory = process->GetMemory();
@@ -173,7 +173,7 @@ std::vector<BacktraceEntry> GetAArch32Backtrace(const Kernel::KProcess* process,
} // namespace
std::optional<std::string> GetThreadName(const Kernel::KThread* thread) {
- const auto* process = thread->GetOwnerProcess();
+ auto* process = thread->GetOwnerProcess();
if (process->Is64Bit()) {
return GetNameFromThreadType64(process->GetMemory(), *thread);
} else {
@@ -248,7 +248,7 @@ Kernel::KProcessAddress GetModuleEnd(const Kernel::KProcess* process,
return cur_addr - 1;
}
-Loader::AppLoader::Modules FindModules(const Kernel::KProcess* process) {
+Loader::AppLoader::Modules FindModules(Kernel::KProcess* process) {
Loader::AppLoader::Modules modules;
auto& page_table = process->GetPageTable();
@@ -312,7 +312,7 @@ Loader::AppLoader::Modules FindModules(const Kernel::KProcess* process) {
return modules;
}
-Kernel::KProcessAddress FindMainModuleEntrypoint(const Kernel::KProcess* process) {
+Kernel::KProcessAddress FindMainModuleEntrypoint(Kernel::KProcess* process) {
// Do we have any loaded executable sections?
auto modules = FindModules(process);
@@ -337,7 +337,7 @@ void InvalidateInstructionCacheRange(const Kernel::KProcess* process, u64 addres
}
}
-std::vector<BacktraceEntry> GetBacktraceFromContext(const Kernel::KProcess* process,
+std::vector<BacktraceEntry> GetBacktraceFromContext(Kernel::KProcess* process,
const Kernel::Svc::ThreadContext& ctx) {
if (process->Is64Bit()) {
return GetAArch64Backtrace(process, ctx);
diff --git a/src/core/arm/debug.h b/src/core/arm/debug.h
index c542633db..3cd671365 100644
--- a/src/core/arm/debug.h
+++ b/src/core/arm/debug.h
@@ -14,9 +14,9 @@ std::optional<std::string> GetThreadName(const Kernel::KThread* thread);
std::string_view GetThreadWaitReason(const Kernel::KThread* thread);
std::string GetThreadState(const Kernel::KThread* thread);
-Loader::AppLoader::Modules FindModules(const Kernel::KProcess* process);
+Loader::AppLoader::Modules FindModules(Kernel::KProcess* process);
Kernel::KProcessAddress GetModuleEnd(const Kernel::KProcess* process, Kernel::KProcessAddress base);
-Kernel::KProcessAddress FindMainModuleEntrypoint(const Kernel::KProcess* process);
+Kernel::KProcessAddress FindMainModuleEntrypoint(Kernel::KProcess* process);
void InvalidateInstructionCacheRange(const Kernel::KProcess* process, u64 address, u64 size);
@@ -28,7 +28,7 @@ struct BacktraceEntry {
std::string name;
};
-std::vector<BacktraceEntry> GetBacktraceFromContext(const Kernel::KProcess* process,
+std::vector<BacktraceEntry> GetBacktraceFromContext(Kernel::KProcess* process,
const Kernel::Svc::ThreadContext& ctx);
std::vector<BacktraceEntry> GetBacktrace(const Kernel::KThread* thread);
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp
new file mode 100644
index 000000000..e6e9fc45b
--- /dev/null
+++ b/src/core/arm/dynarmic/arm_dynarmic.cpp
@@ -0,0 +1,49 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#ifdef __linux__
+
+#include "common/signal_chain.h"
+
+#include "core/arm/dynarmic/arm_dynarmic.h"
+#include "core/hle/kernel/k_process.h"
+#include "core/memory.h"
+
+namespace Core {
+
+namespace {
+
+thread_local Core::Memory::Memory* g_current_memory{};
+std::once_flag g_registered{};
+struct sigaction g_old_segv {};
+
+void HandleSigSegv(int sig, siginfo_t* info, void* ctx) {
+ if (g_current_memory && g_current_memory->InvalidateSeparateHeap(info->si_addr)) {
+ return;
+ }
+
+ return g_old_segv.sa_sigaction(sig, info, ctx);
+}
+
+} // namespace
+
+ScopedJitExecution::ScopedJitExecution(Kernel::KProcess* process) {
+ g_current_memory = std::addressof(process->GetMemory());
+}
+
+ScopedJitExecution::~ScopedJitExecution() {
+ g_current_memory = nullptr;
+}
+
+void ScopedJitExecution::RegisterHandler() {
+ std::call_once(g_registered, [] {
+ struct sigaction sa {};
+ sa.sa_sigaction = &HandleSigSegv;
+ sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
+ Common::SigAction(SIGSEGV, std::addressof(sa), std::addressof(g_old_segv));
+ });
+}
+
+} // namespace Core
+
+#endif
diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h
index eef7c3116..53dd18815 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.h
+++ b/src/core/arm/dynarmic/arm_dynarmic.h
@@ -26,4 +26,24 @@ constexpr HaltReason TranslateHaltReason(Dynarmic::HaltReason hr) {
return static_cast<HaltReason>(hr);
}
+#ifdef __linux__
+
+class ScopedJitExecution {
+public:
+ explicit ScopedJitExecution(Kernel::KProcess* process);
+ ~ScopedJitExecution();
+ static void RegisterHandler();
+};
+
+#else
+
+class ScopedJitExecution {
+public:
+ explicit ScopedJitExecution(Kernel::KProcess* process) {}
+ ~ScopedJitExecution() {}
+ static void RegisterHandler() {}
+};
+
+#endif
+
} // namespace Core
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index f34865e26..36478f722 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -15,7 +15,7 @@ using namespace Common::Literals;
class DynarmicCallbacks32 : public Dynarmic::A32::UserCallbacks {
public:
- explicit DynarmicCallbacks32(ArmDynarmic32& parent, const Kernel::KProcess* process)
+ explicit DynarmicCallbacks32(ArmDynarmic32& parent, Kernel::KProcess* process)
: m_parent{parent}, m_memory(process->GetMemory()),
m_process(process), m_debugger_enabled{parent.m_system.DebuggerEnabled()},
m_check_memory_access{m_debugger_enabled ||
@@ -169,7 +169,7 @@ public:
ArmDynarmic32& m_parent;
Core::Memory::Memory& m_memory;
- const Kernel::KProcess* m_process{};
+ Kernel::KProcess* m_process{};
const bool m_debugger_enabled{};
const bool m_check_memory_access{};
static constexpr u64 MinimumRunCycles = 10000U;
@@ -331,11 +331,15 @@ bool ArmDynarmic32::IsInThumbMode() const {
}
HaltReason ArmDynarmic32::RunThread(Kernel::KThread* thread) {
+ ScopedJitExecution sj(thread->GetOwnerProcess());
+
m_jit->ClearExclusiveState();
return TranslateHaltReason(m_jit->Run());
}
HaltReason ArmDynarmic32::StepThread(Kernel::KThread* thread) {
+ ScopedJitExecution sj(thread->GetOwnerProcess());
+
m_jit->ClearExclusiveState();
return TranslateHaltReason(m_jit->Step());
}
@@ -370,13 +374,14 @@ void ArmDynarmic32::RewindBreakpointInstruction() {
this->SetContext(m_breakpoint_context);
}
-ArmDynarmic32::ArmDynarmic32(System& system, bool uses_wall_clock, const Kernel::KProcess* process,
+ArmDynarmic32::ArmDynarmic32(System& system, bool uses_wall_clock, Kernel::KProcess* process,
DynarmicExclusiveMonitor& exclusive_monitor, std::size_t core_index)
: ArmInterface{uses_wall_clock}, m_system{system}, m_exclusive_monitor{exclusive_monitor},
m_cb(std::make_unique<DynarmicCallbacks32>(*this, process)),
m_cp15(std::make_shared<DynarmicCP15>(*this)), m_core_index{core_index} {
auto& page_table_impl = process->GetPageTable().GetBasePageTable().GetImpl();
m_jit = MakeJit(&page_table_impl);
+ ScopedJitExecution::RegisterHandler();
}
ArmDynarmic32::~ArmDynarmic32() = default;
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.h b/src/core/arm/dynarmic/arm_dynarmic_32.h
index 185ac7cbf..b580efe61 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.h
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.h
@@ -20,7 +20,7 @@ class System;
class ArmDynarmic32 final : public ArmInterface {
public:
- ArmDynarmic32(System& system, bool uses_wall_clock, const Kernel::KProcess* process,
+ ArmDynarmic32(System& system, bool uses_wall_clock, Kernel::KProcess* process,
DynarmicExclusiveMonitor& exclusive_monitor, std::size_t core_index);
~ArmDynarmic32() override;
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index dff14756e..c811c8ad5 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -15,7 +15,7 @@ using namespace Common::Literals;
class DynarmicCallbacks64 : public Dynarmic::A64::UserCallbacks {
public:
- explicit DynarmicCallbacks64(ArmDynarmic64& parent, const Kernel::KProcess* process)
+ explicit DynarmicCallbacks64(ArmDynarmic64& parent, Kernel::KProcess* process)
: m_parent{parent}, m_memory(process->GetMemory()),
m_process(process), m_debugger_enabled{parent.m_system.DebuggerEnabled()},
m_check_memory_access{m_debugger_enabled ||
@@ -216,7 +216,7 @@ public:
Core::Memory::Memory& m_memory;
u64 m_tpidrro_el0{};
u64 m_tpidr_el0{};
- const Kernel::KProcess* m_process{};
+ Kernel::KProcess* m_process{};
const bool m_debugger_enabled{};
const bool m_check_memory_access{};
static constexpr u64 MinimumRunCycles = 10000U;
@@ -362,11 +362,15 @@ std::shared_ptr<Dynarmic::A64::Jit> ArmDynarmic64::MakeJit(Common::PageTable* pa
}
HaltReason ArmDynarmic64::RunThread(Kernel::KThread* thread) {
+ ScopedJitExecution sj(thread->GetOwnerProcess());
+
m_jit->ClearExclusiveState();
return TranslateHaltReason(m_jit->Run());
}
HaltReason ArmDynarmic64::StepThread(Kernel::KThread* thread) {
+ ScopedJitExecution sj(thread->GetOwnerProcess());
+
m_jit->ClearExclusiveState();
return TranslateHaltReason(m_jit->Step());
}
@@ -399,13 +403,14 @@ void ArmDynarmic64::RewindBreakpointInstruction() {
this->SetContext(m_breakpoint_context);
}
-ArmDynarmic64::ArmDynarmic64(System& system, bool uses_wall_clock, const Kernel::KProcess* process,
+ArmDynarmic64::ArmDynarmic64(System& system, bool uses_wall_clock, Kernel::KProcess* process,
DynarmicExclusiveMonitor& exclusive_monitor, std::size_t core_index)
: ArmInterface{uses_wall_clock}, m_system{system}, m_exclusive_monitor{exclusive_monitor},
m_cb(std::make_unique<DynarmicCallbacks64>(*this, process)), m_core_index{core_index} {
auto& page_table = process->GetPageTable().GetBasePageTable();
auto& page_table_impl = page_table.GetImpl();
m_jit = MakeJit(&page_table_impl, page_table.GetAddressSpaceWidth());
+ ScopedJitExecution::RegisterHandler();
}
ArmDynarmic64::~ArmDynarmic64() = default;
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.h b/src/core/arm/dynarmic/arm_dynarmic_64.h
index 4f3dd026f..08cd982b3 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.h
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.h
@@ -25,7 +25,7 @@ class System;
class ArmDynarmic64 final : public ArmInterface {
public:
- ArmDynarmic64(System& system, bool uses_wall_clock, const Kernel::KProcess* process,
+ ArmDynarmic64(System& system, bool uses_wall_clock, Kernel::KProcess* process,
DynarmicExclusiveMonitor& exclusive_monitor, std::size_t core_index);
~ArmDynarmic64() override;
diff --git a/src/core/arm/nce/arm_nce.cpp b/src/core/arm/nce/arm_nce.cpp
index 1311e66a9..123b3da7e 100644
--- a/src/core/arm/nce/arm_nce.cpp
+++ b/src/core/arm/nce/arm_nce.cpp
@@ -39,7 +39,7 @@ fpsimd_context* GetFloatingPointState(mcontext_t& host_ctx) {
}
using namespace Common::Literals;
-constexpr u32 StackSize = 32_KiB;
+constexpr u32 StackSize = 128_KiB;
} // namespace
diff --git a/src/core/arm/nce/interpreter_visitor.cpp b/src/core/arm/nce/interpreter_visitor.cpp
index 8e81c66a5..def888d15 100644
--- a/src/core/arm/nce/interpreter_visitor.cpp
+++ b/src/core/arm/nce/interpreter_visitor.cpp
@@ -5,8 +5,6 @@
#include "common/bit_cast.h"
#include "core/arm/nce/interpreter_visitor.h"
-#include <dynarmic/frontend/A64/decoder/a64.h>
-
namespace Core {
template <u32 BitSize>
@@ -249,6 +247,7 @@ bool InterpreterVisitor::LDR_lit_fpsimd(Imm<2> opc, Imm<19> imm19, Vec Vt) {
return false;
}
+ // Size in bytes
const u64 size = 4 << opc.ZeroExtend();
const u64 offset = imm19.SignExtend<u64>() << 2;
const u64 address = this->GetPc() + offset;
@@ -530,7 +529,7 @@ bool InterpreterVisitor::SIMDImmediate(bool wback, bool postindex, size_t scale,
}
case MemOp::Load: {
u128 data{};
- m_memory.ReadBlock(address, &data, datasize);
+ m_memory.ReadBlock(address, &data, datasize / 8);
this->SetVec(Vt, data);
break;
}
diff --git a/src/core/arm/nce/visitor_base.h b/src/core/arm/nce/visitor_base.h
index 8fb032912..6a2be3d9b 100644
--- a/src/core/arm/nce/visitor_base.h
+++ b/src/core/arm/nce/visitor_base.h
@@ -4,9 +4,15 @@
#pragma once
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wshadow"
+
#include <dynarmic/frontend/A64/a64_types.h>
+#include <dynarmic/frontend/A64/decoder/a64.h>
#include <dynarmic/frontend/imm.h>
+#pragma GCC diagnostic pop
+
namespace Core {
class VisitorBase {
diff --git a/src/core/core.cpp b/src/core/core.cpp
index b14f74976..66f444d39 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -28,7 +28,6 @@
#include "core/file_sys/savedata_factory.h"
#include "core/file_sys/vfs_concat.h"
#include "core/file_sys/vfs_real.h"
-#include "core/gpu_dirty_memory_manager.h"
#include "core/hid/hid_core.h"
#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/kernel/k_process.h"
@@ -130,11 +129,8 @@ FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
struct System::Impl {
explicit Impl(System& system)
- : kernel{system}, fs_controller{system}, memory{system}, hid_core{}, room_network{},
- cpu_manager{system}, reporter{system}, applet_manager{system}, profile_manager{},
- time_manager{system}, gpu_dirty_memory_write_manager{} {
- memory.SetGPUDirtyManagers(gpu_dirty_memory_write_manager);
- }
+ : kernel{system}, fs_controller{system}, hid_core{}, room_network{}, cpu_manager{system},
+ reporter{system}, applet_manager{system}, profile_manager{}, time_manager{system} {}
void Initialize(System& system) {
device_memory = std::make_unique<Core::DeviceMemory>();
@@ -241,17 +237,17 @@ struct System::Impl {
debugger = std::make_unique<Debugger>(system, port);
}
- SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) {
+ void InitializeKernel(System& system) {
LOG_DEBUG(Core, "initialized OK");
// Setting changes may require a full system reinitialization (e.g., disabling multicore).
ReinitializeIfNecessary(system);
- memory.SetGPUDirtyManagers(gpu_dirty_memory_write_manager);
-
kernel.Initialize();
cpu_manager.Initialize();
+ }
+ SystemResultStatus SetupForApplicationProcess(System& system, Frontend::EmuWindow& emu_window) {
/// Reset all glue registrations
arp_manager.ResetAll();
@@ -300,17 +296,9 @@ struct System::Impl {
return SystemResultStatus::ErrorGetLoader;
}
- SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)};
- if (init_result != SystemResultStatus::Success) {
- LOG_CRITICAL(Core, "Failed to initialize system (Error {})!",
- static_cast<int>(init_result));
- ShutdownMainProcess();
- return init_result;
- }
-
- telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
+ InitializeKernel(system);
- // Create the process.
+ // Create the application process.
auto main_process = Kernel::KProcess::Create(system.Kernel());
Kernel::KProcess::Register(system.Kernel(), main_process);
kernel.AppendNewProcess(main_process);
@@ -323,7 +311,18 @@ struct System::Impl {
return static_cast<SystemResultStatus>(
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
}
+
+ // Set up the rest of the system.
+ SystemResultStatus init_result{SetupForApplicationProcess(system, emu_window)};
+ if (init_result != SystemResultStatus::Success) {
+ LOG_CRITICAL(Core, "Failed to initialize system (Error {})!",
+ static_cast<int>(init_result));
+ ShutdownMainProcess();
+ return init_result;
+ }
+
AddGlueRegistrationForProcess(*app_loader, *main_process);
+ telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
// Initialize cheat engine
if (cheat_engine) {
@@ -426,7 +425,6 @@ struct System::Impl {
cpu_manager.Shutdown();
debugger.reset();
kernel.Shutdown();
- memory.Reset();
Network::RestartSocketOperations();
if (auto room_member = room_network.GetRoomMember().lock()) {
@@ -507,7 +505,6 @@ struct System::Impl {
std::unique_ptr<Tegra::Host1x::Host1x> host1x_core;
std::unique_ptr<Core::DeviceMemory> device_memory;
std::unique_ptr<AudioCore::AudioCore> audio_core;
- Core::Memory::Memory memory;
Core::HID::HIDCore hid_core;
Network::RoomNetwork room_network;
@@ -567,9 +564,6 @@ struct System::Impl {
std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{};
std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{};
- std::array<Core::GPUDirtyMemoryManager, Core::Hardware::NUM_CPU_CORES>
- gpu_dirty_memory_write_manager{};
-
std::deque<std::vector<u8>> user_channel;
};
@@ -652,29 +646,12 @@ void System::PrepareReschedule(const u32 core_index) {
impl->kernel.PrepareReschedule(core_index);
}
-Core::GPUDirtyMemoryManager& System::CurrentGPUDirtyMemoryManager() {
- const std::size_t core = impl->kernel.GetCurrentHostThreadID();
- return impl->gpu_dirty_memory_write_manager[core < Core::Hardware::NUM_CPU_CORES
- ? core
- : Core::Hardware::NUM_CPU_CORES - 1];
-}
-
-/// Provides a constant reference to the current gou dirty memory manager.
-const Core::GPUDirtyMemoryManager& System::CurrentGPUDirtyMemoryManager() const {
- const std::size_t core = impl->kernel.GetCurrentHostThreadID();
- return impl->gpu_dirty_memory_write_manager[core < Core::Hardware::NUM_CPU_CORES
- ? core
- : Core::Hardware::NUM_CPU_CORES - 1];
-}
-
size_t System::GetCurrentHostThreadID() const {
return impl->kernel.GetCurrentHostThreadID();
}
void System::GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback) {
- for (auto& manager : impl->gpu_dirty_memory_write_manager) {
- manager.Gather(callback);
- }
+ return this->ApplicationProcess()->GatherGPUDirtyMemory(callback);
}
PerfStatsResults System::GetAndResetPerfStats() {
@@ -723,20 +700,12 @@ const Kernel::KProcess* System::ApplicationProcess() const {
return impl->kernel.ApplicationProcess();
}
-ExclusiveMonitor& System::Monitor() {
- return impl->kernel.GetExclusiveMonitor();
-}
-
-const ExclusiveMonitor& System::Monitor() const {
- return impl->kernel.GetExclusiveMonitor();
-}
-
Memory::Memory& System::ApplicationMemory() {
- return impl->memory;
+ return impl->kernel.ApplicationProcess()->GetMemory();
}
const Core::Memory::Memory& System::ApplicationMemory() const {
- return impl->memory;
+ return impl->kernel.ApplicationProcess()->GetMemory();
}
Tegra::GPU& System::GPU() {
diff --git a/src/core/core.h b/src/core/core.h
index 473204db7..ba5add0dc 100644
--- a/src/core/core.h
+++ b/src/core/core.h
@@ -116,7 +116,6 @@ class CpuManager;
class Debugger;
class DeviceMemory;
class ExclusiveMonitor;
-class GPUDirtyMemoryManager;
class PerfStats;
class Reporter;
class SpeedLimiter;
@@ -225,12 +224,6 @@ public:
/// Prepare the core emulation for a reschedule
void PrepareReschedule(u32 core_index);
- /// Provides a reference to the gou dirty memory manager.
- [[nodiscard]] Core::GPUDirtyMemoryManager& CurrentGPUDirtyMemoryManager();
-
- /// Provides a constant reference to the current gou dirty memory manager.
- [[nodiscard]] const Core::GPUDirtyMemoryManager& CurrentGPUDirtyMemoryManager() const;
-
void GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback);
[[nodiscard]] size_t GetCurrentHostThreadID() const;
@@ -250,12 +243,6 @@ public:
/// Gets a const reference to the underlying CPU manager
[[nodiscard]] const CpuManager& GetCpuManager() const;
- /// Gets a reference to the exclusive monitor
- [[nodiscard]] ExclusiveMonitor& Monitor();
-
- /// Gets a constant reference to the exclusive monitor
- [[nodiscard]] const ExclusiveMonitor& Monitor() const;
-
/// Gets a mutable reference to the system memory instance.
[[nodiscard]] Core::Memory::Memory& ApplicationMemory();
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp
index d6b5abc68..fc536413b 100644
--- a/src/core/core_timing.cpp
+++ b/src/core/core_timing.cpp
@@ -29,7 +29,6 @@ std::shared_ptr<EventType> CreateEvent(std::string name, TimedCallback&& callbac
struct CoreTiming::Event {
s64 time;
u64 fifo_order;
- std::uintptr_t user_data;
std::weak_ptr<EventType> type;
s64 reschedule_time;
heap_t::handle_type handle{};
@@ -67,17 +66,15 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) {
event_fifo_id = 0;
shutting_down = false;
cpu_ticks = 0;
- const auto empty_timed_callback = [](std::uintptr_t, u64, std::chrono::nanoseconds)
- -> std::optional<std::chrono::nanoseconds> { return std::nullopt; };
- ev_lost = CreateEvent("_lost_event", empty_timed_callback);
if (is_multicore) {
timer_thread = std::make_unique<std::jthread>(ThreadEntry, std::ref(*this));
}
}
void CoreTiming::ClearPendingEvents() {
- std::scoped_lock lock{basic_lock};
+ std::scoped_lock lock{advance_lock, basic_lock};
event_queue.clear();
+ event.Set();
}
void CoreTiming::Pause(bool is_paused) {
@@ -119,14 +116,12 @@ bool CoreTiming::HasPendingEvents() const {
}
void CoreTiming::ScheduleEvent(std::chrono::nanoseconds ns_into_future,
- const std::shared_ptr<EventType>& event_type,
- std::uintptr_t user_data, bool absolute_time) {
+ const std::shared_ptr<EventType>& event_type, bool absolute_time) {
{
std::scoped_lock scope{basic_lock};
const auto next_time{absolute_time ? ns_into_future : GetGlobalTimeNs() + ns_into_future};
- auto h{event_queue.emplace(
- Event{next_time.count(), event_fifo_id++, user_data, event_type, 0})};
+ auto h{event_queue.emplace(Event{next_time.count(), event_fifo_id++, event_type, 0})};
(*h).handle = h;
}
@@ -136,13 +131,13 @@ void CoreTiming::ScheduleEvent(std::chrono::nanoseconds ns_into_future,
void CoreTiming::ScheduleLoopingEvent(std::chrono::nanoseconds start_time,
std::chrono::nanoseconds resched_time,
const std::shared_ptr<EventType>& event_type,
- std::uintptr_t user_data, bool absolute_time) {
+ bool absolute_time) {
{
std::scoped_lock scope{basic_lock};
const auto next_time{absolute_time ? start_time : GetGlobalTimeNs() + start_time};
- auto h{event_queue.emplace(Event{next_time.count(), event_fifo_id++, user_data, event_type,
- resched_time.count()})};
+ auto h{event_queue.emplace(
+ Event{next_time.count(), event_fifo_id++, event_type, resched_time.count()})};
(*h).handle = h;
}
@@ -150,14 +145,14 @@ void CoreTiming::ScheduleLoopingEvent(std::chrono::nanoseconds start_time,
}
void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& event_type,
- std::uintptr_t user_data, bool wait) {
+ UnscheduleEventType type) {
{
std::scoped_lock lk{basic_lock};
std::vector<heap_t::handle_type> to_remove;
for (auto itr = event_queue.begin(); itr != event_queue.end(); itr++) {
const Event& e = *itr;
- if (e.type.lock().get() == event_type.get() && e.user_data == user_data) {
+ if (e.type.lock().get() == event_type.get()) {
to_remove.push_back(itr->handle);
}
}
@@ -165,10 +160,12 @@ void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& event_type,
for (auto h : to_remove) {
event_queue.erase(h);
}
+
+ event_type->sequence_number++;
}
// Force any in-progress events to finish
- if (wait) {
+ if (type == UnscheduleEventType::Wait) {
std::scoped_lock lk{advance_lock};
}
}
@@ -208,28 +205,31 @@ std::optional<s64> CoreTiming::Advance() {
const Event& evt = event_queue.top();
if (const auto event_type{evt.type.lock()}) {
- if (evt.reschedule_time == 0) {
- const auto evt_user_data = evt.user_data;
- const auto evt_time = evt.time;
+ const auto evt_time = evt.time;
+ const auto evt_sequence_num = event_type->sequence_number;
+ if (evt.reschedule_time == 0) {
event_queue.pop();
basic_lock.unlock();
event_type->callback(
- evt_user_data, evt_time,
- std::chrono::nanoseconds{GetGlobalTimeNs().count() - evt_time});
+ evt_time, std::chrono::nanoseconds{GetGlobalTimeNs().count() - evt_time});
basic_lock.lock();
} else {
basic_lock.unlock();
const auto new_schedule_time{event_type->callback(
- evt.user_data, evt.time,
- std::chrono::nanoseconds{GetGlobalTimeNs().count() - evt.time})};
+ evt_time, std::chrono::nanoseconds{GetGlobalTimeNs().count() - evt_time})};
basic_lock.lock();
+ if (evt_sequence_num != event_type->sequence_number) {
+ // Heap handle is invalidated after external modification.
+ continue;
+ }
+
const auto next_schedule_time{new_schedule_time.has_value()
? new_schedule_time.value().count()
: evt.reschedule_time};
@@ -241,8 +241,8 @@ std::optional<s64> CoreTiming::Advance() {
next_time = pause_end_time + next_schedule_time;
}
- event_queue.update(evt.handle, Event{next_time, event_fifo_id++, evt.user_data,
- evt.type, next_schedule_time, evt.handle});
+ event_queue.update(evt.handle, Event{next_time, event_fifo_id++, evt.type,
+ next_schedule_time, evt.handle});
}
}
diff --git a/src/core/core_timing.h b/src/core/core_timing.h
index 21548f0a9..7e4dff7f3 100644
--- a/src/core/core_timing.h
+++ b/src/core/core_timing.h
@@ -22,17 +22,25 @@ namespace Core::Timing {
/// A callback that may be scheduled for a particular core timing event.
using TimedCallback = std::function<std::optional<std::chrono::nanoseconds>(
- std::uintptr_t user_data, s64 time, std::chrono::nanoseconds ns_late)>;
+ s64 time, std::chrono::nanoseconds ns_late)>;
/// Contains the characteristics of a particular event.
struct EventType {
explicit EventType(TimedCallback&& callback_, std::string&& name_)
- : callback{std::move(callback_)}, name{std::move(name_)} {}
+ : callback{std::move(callback_)}, name{std::move(name_)}, sequence_number{0} {}
/// The event's callback function.
TimedCallback callback;
/// A pointer to the name of the event.
const std::string name;
+ /// A monotonic sequence number, incremented when this event is
+ /// changed externally.
+ size_t sequence_number;
+};
+
+enum class UnscheduleEventType {
+ Wait,
+ NoWait,
};
/**
@@ -89,23 +97,17 @@ public:
/// Schedules an event in core timing
void ScheduleEvent(std::chrono::nanoseconds ns_into_future,
- const std::shared_ptr<EventType>& event_type, std::uintptr_t user_data = 0,
- bool absolute_time = false);
+ const std::shared_ptr<EventType>& event_type, bool absolute_time = false);
/// Schedules an event which will automatically re-schedule itself with the given time, until
/// unscheduled
void ScheduleLoopingEvent(std::chrono::nanoseconds start_time,
std::chrono::nanoseconds resched_time,
const std::shared_ptr<EventType>& event_type,
- std::uintptr_t user_data = 0, bool absolute_time = false);
+ bool absolute_time = false);
- void UnscheduleEvent(const std::shared_ptr<EventType>& event_type, std::uintptr_t user_data,
- bool wait = true);
-
- void UnscheduleEventWithoutWait(const std::shared_ptr<EventType>& event_type,
- std::uintptr_t user_data) {
- UnscheduleEvent(event_type, user_data, false);
- }
+ void UnscheduleEvent(const std::shared_ptr<EventType>& event_type,
+ UnscheduleEventType type = UnscheduleEventType::Wait);
void AddTicks(u64 ticks_to_add);
@@ -158,7 +160,6 @@ private:
heap_t event_queue;
u64 event_fifo_id = 0;
- std::shared_ptr<EventType> ev_lost;
Common::Event event{};
Common::Event pause_event{};
mutable std::mutex basic_lock;
diff --git a/src/core/file_sys/ips_layer.cpp b/src/core/file_sys/ips_layer.cpp
index 7be1322cc..31033634c 100644
--- a/src/core/file_sys/ips_layer.cpp
+++ b/src/core/file_sys/ips_layer.cpp
@@ -73,6 +73,9 @@ VirtualFile PatchIPS(const VirtualFile& in, const VirtualFile& ips) {
return nullptr;
auto in_data = in->ReadAllBytes();
+ if (in_data.size() == 0) {
+ return nullptr;
+ }
std::vector<u8> temp(type == IPSFileType::IPS ? 3 : 4);
u64 offset = 5; // After header
@@ -88,6 +91,10 @@ VirtualFile PatchIPS(const VirtualFile& in, const VirtualFile& ips) {
else
real_offset = (temp[0] << 16) | (temp[1] << 8) | temp[2];
+ if (real_offset > in_data.size()) {
+ return nullptr;
+ }
+
u16 data_size{};
if (ips->ReadObject(&data_size, offset) != sizeof(u16))
return nullptr;
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp
index 763a44fee..539c7f7af 100644
--- a/src/core/file_sys/program_metadata.cpp
+++ b/src/core/file_sys/program_metadata.cpp
@@ -166,6 +166,10 @@ u32 ProgramMetadata::GetSystemResourceSize() const {
return npdm_header.system_resource_size;
}
+PoolPartition ProgramMetadata::GetPoolPartition() const {
+ return acid_header.pool_partition;
+}
+
const ProgramMetadata::KernelCapabilityDescriptors& ProgramMetadata::GetKernelCapabilities() const {
return aci_kernel_capabilities;
}
@@ -201,7 +205,7 @@ void ProgramMetadata::Print() const {
// Begin ACID printing (potential perms, signed)
LOG_DEBUG(Service_FS, "Magic: {:.4}", acid_header.magic.data());
LOG_DEBUG(Service_FS, "Flags: 0x{:02X}", acid_header.flags);
- LOG_DEBUG(Service_FS, " > Is Retail: {}", acid_header.is_retail ? "YES" : "NO");
+ LOG_DEBUG(Service_FS, " > Is Retail: {}", acid_header.production_flag ? "YES" : "NO");
LOG_DEBUG(Service_FS, "Title ID Min: 0x{:016X}", acid_header.title_id_min);
LOG_DEBUG(Service_FS, "Title ID Max: 0x{:016X}", acid_header.title_id_max);
LOG_DEBUG(Service_FS, "Filesystem Access: 0x{:016X}\n", acid_file_access.permissions);
diff --git a/src/core/file_sys/program_metadata.h b/src/core/file_sys/program_metadata.h
index 76ee97d78..a53092b87 100644
--- a/src/core/file_sys/program_metadata.h
+++ b/src/core/file_sys/program_metadata.h
@@ -34,6 +34,13 @@ enum class ProgramFilePermission : u64 {
Everything = 1ULL << 63,
};
+enum class PoolPartition : u32 {
+ Application = 0,
+ Applet = 1,
+ System = 2,
+ SystemNonSecure = 3,
+};
+
/**
* Helper which implements an interface to parse Program Description Metadata (NPDM)
* Data can either be loaded from a file path or with data and an offset into it.
@@ -72,6 +79,7 @@ public:
u64 GetTitleID() const;
u64 GetFilesystemPermissions() const;
u32 GetSystemResourceSize() const;
+ PoolPartition GetPoolPartition() const;
const KernelCapabilityDescriptors& GetKernelCapabilities() const;
const std::array<u8, 0x10>& GetName() const {
return npdm_header.application_name;
@@ -116,8 +124,9 @@ private:
union {
u32 flags;
- BitField<0, 1, u32> is_retail;
- BitField<1, 31, u32> flags_unk;
+ BitField<0, 1, u32> production_flag;
+ BitField<1, 1, u32> unqualified_approval;
+ BitField<2, 4, PoolPartition> pool_partition;
};
u64_le title_id_min;
u64_le title_id_max;
diff --git a/src/core/hid/hid_types.h b/src/core/hid/hid_types.h
index 4bf285f36..a81ed6af0 100644
--- a/src/core/hid/hid_types.h
+++ b/src/core/hid/hid_types.h
@@ -267,6 +267,7 @@ enum class NpadStyleSet : u32 {
All = 0xFFFFFFFFU,
};
static_assert(sizeof(NpadStyleSet) == 4, "NpadStyleSet is an invalid size");
+DECLARE_ENUM_FLAG_OPERATORS(NpadStyleSet)
// This is nn::hid::VibrationDevicePosition
enum class VibrationDevicePosition : u32 {
diff --git a/src/core/hle/kernel/k_address_arbiter.cpp b/src/core/hle/kernel/k_address_arbiter.cpp
index 78d43d729..48889253d 100644
--- a/src/core/hle/kernel/k_address_arbiter.cpp
+++ b/src/core/hle/kernel/k_address_arbiter.cpp
@@ -4,6 +4,7 @@
#include "core/arm/exclusive_monitor.h"
#include "core/core.h"
#include "core/hle/kernel/k_address_arbiter.h"
+#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/k_scoped_scheduler_lock_and_sleep.h"
#include "core/hle/kernel/k_thread.h"
@@ -26,9 +27,9 @@ bool ReadFromUser(KernelCore& kernel, s32* out, KProcessAddress address) {
return true;
}
-bool DecrementIfLessThan(Core::System& system, s32* out, KProcessAddress address, s32 value) {
- auto& monitor = system.Monitor();
- const auto current_core = system.Kernel().CurrentPhysicalCoreIndex();
+bool DecrementIfLessThan(KernelCore& kernel, s32* out, KProcessAddress address, s32 value) {
+ auto& monitor = GetCurrentProcess(kernel).GetExclusiveMonitor();
+ const auto current_core = kernel.CurrentPhysicalCoreIndex();
// NOTE: If scheduler lock is not held here, interrupt disable is required.
// KScopedInterruptDisable di;
@@ -66,10 +67,10 @@ bool DecrementIfLessThan(Core::System& system, s32* out, KProcessAddress address
return true;
}
-bool UpdateIfEqual(Core::System& system, s32* out, KProcessAddress address, s32 value,
+bool UpdateIfEqual(KernelCore& kernel, s32* out, KProcessAddress address, s32 value,
s32 new_value) {
- auto& monitor = system.Monitor();
- const auto current_core = system.Kernel().CurrentPhysicalCoreIndex();
+ auto& monitor = GetCurrentProcess(kernel).GetExclusiveMonitor();
+ const auto current_core = kernel.CurrentPhysicalCoreIndex();
// NOTE: If scheduler lock is not held here, interrupt disable is required.
// KScopedInterruptDisable di;
@@ -159,7 +160,7 @@ Result KAddressArbiter::SignalAndIncrementIfEqual(uint64_t addr, s32 value, s32
// Check the userspace value.
s32 user_value{};
- R_UNLESS(UpdateIfEqual(m_system, std::addressof(user_value), addr, value, value + 1),
+ R_UNLESS(UpdateIfEqual(m_kernel, std::addressof(user_value), addr, value, value + 1),
ResultInvalidCurrentMemory);
R_UNLESS(user_value == value, ResultInvalidState);
@@ -219,7 +220,7 @@ Result KAddressArbiter::SignalAndModifyByWaitingCountIfEqual(uint64_t addr, s32
s32 user_value{};
bool succeeded{};
if (value != new_value) {
- succeeded = UpdateIfEqual(m_system, std::addressof(user_value), addr, value, new_value);
+ succeeded = UpdateIfEqual(m_kernel, std::addressof(user_value), addr, value, new_value);
} else {
succeeded = ReadFromUser(m_kernel, std::addressof(user_value), addr);
}
@@ -262,7 +263,7 @@ Result KAddressArbiter::WaitIfLessThan(uint64_t addr, s32 value, bool decrement,
s32 user_value{};
bool succeeded{};
if (decrement) {
- succeeded = DecrementIfLessThan(m_system, std::addressof(user_value), addr, value);
+ succeeded = DecrementIfLessThan(m_kernel, std::addressof(user_value), addr, value);
} else {
succeeded = ReadFromUser(m_kernel, std::addressof(user_value), addr);
}
diff --git a/src/core/hle/kernel/k_auto_object_container.cpp b/src/core/hle/kernel/k_auto_object_container.cpp
index 636b3f993..7bea1a1c2 100644
--- a/src/core/hle/kernel/k_auto_object_container.cpp
+++ b/src/core/hle/kernel/k_auto_object_container.cpp
@@ -8,19 +8,22 @@
namespace Kernel {
void KAutoObjectWithListContainer::Register(KAutoObjectWithList* obj) {
- KScopedLightLock lk(m_lock);
+ // KScopedInterruptDisable di;
+ KScopedSpinLock lk(m_lock);
m_object_list.insert_unique(*obj);
}
void KAutoObjectWithListContainer::Unregister(KAutoObjectWithList* obj) {
- KScopedLightLock lk(m_lock);
+ // KScopedInterruptDisable di;
+ KScopedSpinLock lk(m_lock);
m_object_list.erase(*obj);
}
size_t KAutoObjectWithListContainer::GetOwnedCount(KProcess* owner) {
- KScopedLightLock lk(m_lock);
+ // KScopedInterruptDisable di;
+ KScopedSpinLock lk(m_lock);
return std::count_if(m_object_list.begin(), m_object_list.end(),
[&](const auto& obj) { return obj.GetOwner() == owner; });
diff --git a/src/core/hle/kernel/k_auto_object_container.h b/src/core/hle/kernel/k_auto_object_container.h
index badd75d2a..770743d21 100644
--- a/src/core/hle/kernel/k_auto_object_container.h
+++ b/src/core/hle/kernel/k_auto_object_container.h
@@ -7,7 +7,7 @@
#include "common/common_funcs.h"
#include "core/hle/kernel/k_auto_object.h"
-#include "core/hle/kernel/k_light_lock.h"
+#include "core/hle/kernel/k_spin_lock.h"
namespace Kernel {
@@ -21,32 +21,7 @@ public:
using ListType = boost::intrusive::rbtree<KAutoObjectWithList>;
- class ListAccessor : public KScopedLightLock {
- public:
- explicit ListAccessor(KAutoObjectWithListContainer* container)
- : KScopedLightLock(container->m_lock), m_list(container->m_object_list) {}
- explicit ListAccessor(KAutoObjectWithListContainer& container)
- : KScopedLightLock(container.m_lock), m_list(container.m_object_list) {}
-
- typename ListType::iterator begin() const {
- return m_list.begin();
- }
-
- typename ListType::iterator end() const {
- return m_list.end();
- }
-
- typename ListType::iterator find(typename ListType::const_reference ref) const {
- return m_list.find(ref);
- }
-
- private:
- ListType& m_list;
- };
-
- friend class ListAccessor;
-
- KAutoObjectWithListContainer(KernelCore& kernel) : m_lock(kernel), m_object_list() {}
+ KAutoObjectWithListContainer(KernelCore& kernel) : m_lock(), m_object_list() {}
void Initialize() {}
void Finalize() {}
@@ -56,7 +31,7 @@ public:
size_t GetOwnedCount(KProcess* owner);
private:
- KLightLock m_lock;
+ KSpinLock m_lock;
ListType m_object_list;
};
diff --git a/src/core/hle/kernel/k_capabilities.cpp b/src/core/hle/kernel/k_capabilities.cpp
index 274fee493..d2288c30d 100644
--- a/src/core/hle/kernel/k_capabilities.cpp
+++ b/src/core/hle/kernel/k_capabilities.cpp
@@ -185,6 +185,10 @@ Result KCapabilities::ProcessMapRegionCapability(const u32 cap, F f) {
case RegionType::NoMapping:
break;
case RegionType::KernelTraceBuffer:
+ if constexpr (!IsKTraceEnabled) {
+ break;
+ }
+ [[fallthrough]];
case RegionType::OnMemoryBootImage:
case RegionType::DTB:
R_TRY(f(MemoryRegions[static_cast<u32>(type)], perm));
@@ -330,8 +334,6 @@ Result KCapabilities::SetCapabilities(std::span<const u32> caps, KProcessPageTab
// Map the range.
R_TRY(this->MapRange_(cap, size_cap, page_table));
- } else if (GetCapabilityType(cap) == CapabilityType::MapRegion && !IsKTraceEnabled) {
- continue;
} else {
R_TRY(this->SetCapability(cap, set_flags, set_svc, page_table));
}
diff --git a/src/core/hle/kernel/k_client_port.cpp b/src/core/hle/kernel/k_client_port.cpp
index 11b1b977e..68cea978a 100644
--- a/src/core/hle/kernel/k_client_port.cpp
+++ b/src/core/hle/kernel/k_client_port.cpp
@@ -58,9 +58,8 @@ Result KClientPort::CreateSession(KClientSession** out) {
KSession* session{};
// Reserve a new session from the resource limit.
- //! FIXME: we are reserving this from the wrong resource limit!
- KScopedResourceReservation session_reservation(
- m_kernel.ApplicationProcess()->GetResourceLimit(), LimitableResource::SessionCountMax);
+ KScopedResourceReservation session_reservation(GetCurrentProcessPointer(m_kernel),
+ LimitableResource::SessionCountMax);
R_UNLESS(session_reservation.Succeeded(), ResultLimitReached);
// Allocate a session normally.
diff --git a/src/core/hle/kernel/k_condition_variable.cpp b/src/core/hle/kernel/k_condition_variable.cpp
index 7633a51fb..94ea3527a 100644
--- a/src/core/hle/kernel/k_condition_variable.cpp
+++ b/src/core/hle/kernel/k_condition_variable.cpp
@@ -28,10 +28,10 @@ bool WriteToUser(KernelCore& kernel, KProcessAddress address, const u32* p) {
return true;
}
-bool UpdateLockAtomic(Core::System& system, u32* out, KProcessAddress address, u32 if_zero,
+bool UpdateLockAtomic(KernelCore& kernel, u32* out, KProcessAddress address, u32 if_zero,
u32 new_orr_mask) {
- auto& monitor = system.Monitor();
- const auto current_core = system.Kernel().CurrentPhysicalCoreIndex();
+ auto& monitor = GetCurrentProcess(kernel).GetExclusiveMonitor();
+ const auto current_core = kernel.CurrentPhysicalCoreIndex();
u32 expected{};
@@ -208,7 +208,7 @@ void KConditionVariable::SignalImpl(KThread* thread) {
// TODO(bunnei): We should call CanAccessAtomic(..) here.
can_access = true;
if (can_access) [[likely]] {
- UpdateLockAtomic(m_system, std::addressof(prev_tag), address, own_tag,
+ UpdateLockAtomic(m_kernel, std::addressof(prev_tag), address, own_tag,
Svc::HandleWaitMask);
}
}
diff --git a/src/core/hle/kernel/k_handle_table.h b/src/core/hle/kernel/k_handle_table.h
index d7660630c..1bf68e6b0 100644
--- a/src/core/hle/kernel/k_handle_table.h
+++ b/src/core/hle/kernel/k_handle_table.h
@@ -90,8 +90,7 @@ public:
// Handle pseudo-handles.
if constexpr (std::derived_from<KProcess, T>) {
if (handle == Svc::PseudoHandle::CurrentProcess) {
- //! FIXME: this is the wrong process!
- auto* const cur_process = m_kernel.ApplicationProcess();
+ auto* const cur_process = GetCurrentProcessPointer(m_kernel);
ASSERT(cur_process != nullptr);
return cur_process;
}
diff --git a/src/core/hle/kernel/k_hardware_timer.cpp b/src/core/hle/kernel/k_hardware_timer.cpp
index 8e2e40307..4e947dd6b 100644
--- a/src/core/hle/kernel/k_hardware_timer.cpp
+++ b/src/core/hle/kernel/k_hardware_timer.cpp
@@ -10,15 +10,15 @@ namespace Kernel {
void KHardwareTimer::Initialize() {
// Create the timing callback to register with CoreTiming.
- m_event_type = Core::Timing::CreateEvent(
- "KHardwareTimer::Callback", [](std::uintptr_t timer_handle, s64, std::chrono::nanoseconds) {
- reinterpret_cast<KHardwareTimer*>(timer_handle)->DoTask();
- return std::nullopt;
- });
+ m_event_type = Core::Timing::CreateEvent("KHardwareTimer::Callback",
+ [this](s64, std::chrono::nanoseconds) {
+ this->DoTask();
+ return std::nullopt;
+ });
}
void KHardwareTimer::Finalize() {
- m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type, reinterpret_cast<uintptr_t>(this));
+ m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type);
m_wakeup_time = std::numeric_limits<s64>::max();
m_event_type.reset();
}
@@ -57,13 +57,12 @@ void KHardwareTimer::EnableInterrupt(s64 wakeup_time) {
m_wakeup_time = wakeup_time;
m_kernel.System().CoreTiming().ScheduleEvent(std::chrono::nanoseconds{m_wakeup_time},
- m_event_type, reinterpret_cast<uintptr_t>(this),
- true);
+ m_event_type, true);
}
void KHardwareTimer::DisableInterrupt() {
- m_kernel.System().CoreTiming().UnscheduleEventWithoutWait(m_event_type,
- reinterpret_cast<uintptr_t>(this));
+ m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type,
+ Core::Timing::UnscheduleEventType::NoWait);
m_wakeup_time = std::numeric_limits<s64>::max();
}
diff --git a/src/core/hle/kernel/k_page_table_base.cpp b/src/core/hle/kernel/k_page_table_base.cpp
index 423289145..8c1549559 100644
--- a/src/core/hle/kernel/k_page_table_base.cpp
+++ b/src/core/hle/kernel/k_page_table_base.cpp
@@ -434,7 +434,7 @@ Result KPageTableBase::InitializeForProcess(Svc::CreateProcessFlag as_type, bool
void KPageTableBase::Finalize() {
auto HostUnmapCallback = [&](KProcessAddress addr, u64 size) {
if (Settings::IsFastmemEnabled()) {
- m_system.DeviceMemory().buffer.Unmap(GetInteger(addr), size);
+ m_system.DeviceMemory().buffer.Unmap(GetInteger(addr), size, false);
}
};
@@ -5243,7 +5243,7 @@ Result KPageTableBase::MapPhysicalMemory(KProcessAddress address, size_t size) {
// Unmap.
R_ASSERT(this->Operate(updater.GetPageList(), cur_address,
cur_pages, 0, false, unmap_properties,
- OperationType::Unmap, true));
+ OperationType::UnmapPhysical, true));
}
// Check if we're done.
@@ -5326,7 +5326,7 @@ Result KPageTableBase::MapPhysicalMemory(KProcessAddress address, size_t size) {
// Map the papges.
R_TRY(this->Operate(updater.GetPageList(), cur_address, map_pages,
cur_pg, map_properties,
- OperationType::MapFirstGroup, false));
+ OperationType::MapFirstGroupPhysical, false));
}
}
@@ -5480,7 +5480,7 @@ Result KPageTableBase::UnmapPhysicalMemory(KProcessAddress address, size_t size)
// Unmap.
R_ASSERT(this->Operate(updater.GetPageList(), cur_address, cur_pages, 0, false,
- unmap_properties, OperationType::Unmap, false));
+ unmap_properties, OperationType::UnmapPhysical, false));
}
// Check if we're done.
@@ -5655,7 +5655,10 @@ Result KPageTableBase::Operate(PageLinkedList* page_list, KProcessAddress virt_a
// or free them to the page list, and so it goes unused (along with page properties).
switch (operation) {
- case OperationType::Unmap: {
+ case OperationType::Unmap:
+ case OperationType::UnmapPhysical: {
+ const bool separate_heap = operation == OperationType::UnmapPhysical;
+
// Ensure that any pages we track are closed on exit.
KPageGroup pages_to_close(m_kernel, this->GetBlockInfoManager());
SCOPE_EXIT({ pages_to_close.CloseAndReset(); });
@@ -5664,7 +5667,7 @@ Result KPageTableBase::Operate(PageLinkedList* page_list, KProcessAddress virt_a
this->MakePageGroup(pages_to_close, virt_addr, num_pages);
// Unmap.
- m_memory->UnmapRegion(*m_impl, virt_addr, num_pages * PageSize);
+ m_memory->UnmapRegion(*m_impl, virt_addr, num_pages * PageSize, separate_heap);
R_SUCCEED();
}
@@ -5672,7 +5675,7 @@ Result KPageTableBase::Operate(PageLinkedList* page_list, KProcessAddress virt_a
ASSERT(virt_addr != 0);
ASSERT(Common::IsAligned(GetInteger(virt_addr), PageSize));
m_memory->MapMemoryRegion(*m_impl, virt_addr, num_pages * PageSize, phys_addr,
- ConvertToMemoryPermission(properties.perm));
+ ConvertToMemoryPermission(properties.perm), false);
// Open references to pages, if we should.
if (this->IsHeapPhysicalAddress(phys_addr)) {
@@ -5711,16 +5714,19 @@ Result KPageTableBase::Operate(PageLinkedList* page_list, KProcessAddress virt_a
switch (operation) {
case OperationType::MapGroup:
- case OperationType::MapFirstGroup: {
+ case OperationType::MapFirstGroup:
+ case OperationType::MapFirstGroupPhysical: {
+ const bool separate_heap = operation == OperationType::MapFirstGroupPhysical;
+
// We want to maintain a new reference to every page in the group.
- KScopedPageGroup spg(page_group, operation != OperationType::MapFirstGroup);
+ KScopedPageGroup spg(page_group, operation == OperationType::MapGroup);
for (const auto& node : page_group) {
const size_t size{node.GetNumPages() * PageSize};
// Map the pages.
m_memory->MapMemoryRegion(*m_impl, virt_addr, size, node.GetAddress(),
- ConvertToMemoryPermission(properties.perm));
+ ConvertToMemoryPermission(properties.perm), separate_heap);
virt_addr += size;
}
diff --git a/src/core/hle/kernel/k_page_table_base.h b/src/core/hle/kernel/k_page_table_base.h
index 556d230b3..077cafc96 100644
--- a/src/core/hle/kernel/k_page_table_base.h
+++ b/src/core/hle/kernel/k_page_table_base.h
@@ -104,6 +104,9 @@ protected:
ChangePermissionsAndRefresh = 5,
ChangePermissionsAndRefreshAndFlush = 6,
Separate = 7,
+
+ MapFirstGroupPhysical = 65000,
+ UnmapPhysical = 65001,
};
static constexpr size_t MaxPhysicalMapAlignment = 1_GiB;
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp
index 3a2635e1f..068e71dff 100644
--- a/src/core/hle/kernel/k_process.cpp
+++ b/src/core/hle/kernel/k_process.cpp
@@ -306,12 +306,16 @@ Result KProcess::Initialize(const Svc::CreateProcessParameter& params, const KPa
False(params.flags & Svc::CreateProcessFlag::DisableDeviceAddressSpaceMerge);
R_TRY(m_page_table.Initialize(as_type, enable_aslr, enable_das_merge, !enable_aslr, pool,
params.code_address, params.code_num_pages * PageSize,
- m_system_resource, res_limit, this->GetMemory(), 0));
+ m_system_resource, res_limit, m_memory, 0));
}
ON_RESULT_FAILURE_2 {
m_page_table.Finalize();
};
+ // Ensure our memory is initialized.
+ m_memory.SetCurrentPageTable(*this);
+ m_memory.SetGPUDirtyManagers(m_dirty_memory_managers);
+
// Ensure we can insert the code region.
R_UNLESS(m_page_table.CanContain(params.code_address, params.code_num_pages * PageSize,
KMemoryState::Code),
@@ -399,12 +403,16 @@ Result KProcess::Initialize(const Svc::CreateProcessParameter& params,
False(params.flags & Svc::CreateProcessFlag::DisableDeviceAddressSpaceMerge);
R_TRY(m_page_table.Initialize(as_type, enable_aslr, enable_das_merge, !enable_aslr, pool,
params.code_address, code_size, m_system_resource, res_limit,
- this->GetMemory(), aslr_space_start));
+ m_memory, aslr_space_start));
}
ON_RESULT_FAILURE_2 {
m_page_table.Finalize();
};
+ // Ensure our memory is initialized.
+ m_memory.SetCurrentPageTable(*this);
+ m_memory.SetGPUDirtyManagers(m_dirty_memory_managers);
+
// Ensure we can insert the code region.
R_UNLESS(m_page_table.CanContain(params.code_address, code_size, KMemoryState::Code),
ResultInvalidMemoryRegion);
@@ -1094,8 +1102,7 @@ void KProcess::UnpinThread(KThread* thread) {
Result KProcess::GetThreadList(s32* out_num_threads, KProcessAddress out_thread_ids,
s32 max_out_count) {
- // TODO: use current memory reference
- auto& memory = m_kernel.System().ApplicationMemory();
+ auto& memory = this->GetMemory();
// Lock the list.
KScopedLightLock lk(m_list_lock);
@@ -1128,14 +1135,15 @@ void KProcess::Switch(KProcess* cur_process, KProcess* next_process) {}
KProcess::KProcess(KernelCore& kernel)
: KAutoObjectWithSlabHeapAndContainer(kernel), m_page_table{kernel}, m_state_lock{kernel},
m_list_lock{kernel}, m_cond_var{kernel.System()}, m_address_arbiter{kernel.System()},
- m_handle_table{kernel} {}
+ m_handle_table{kernel}, m_dirty_memory_managers{},
+ m_exclusive_monitor{}, m_memory{kernel.System()} {}
KProcess::~KProcess() = default;
Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std::size_t code_size,
KProcessAddress aslr_space_start, bool is_hbl) {
// Create a resource limit for the process.
- const auto physical_memory_size =
- m_kernel.MemoryManager().GetSize(Kernel::KMemoryManager::Pool::Application);
+ const auto pool = static_cast<KMemoryManager::Pool>(metadata.GetPoolPartition());
+ const auto physical_memory_size = m_kernel.MemoryManager().GetSize(pool);
auto* res_limit =
Kernel::CreateResourceLimitForProcess(m_kernel.System(), physical_memory_size);
@@ -1146,8 +1154,10 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std:
Svc::CreateProcessFlag flag{};
u64 code_address{};
- // We are an application.
- flag |= Svc::CreateProcessFlag::IsApplication;
+ // Determine if we are an application.
+ if (pool == KMemoryManager::Pool::Application) {
+ flag |= Svc::CreateProcessFlag::IsApplication;
+ }
// If we are 64-bit, create as such.
if (metadata.Is64BitProgram()) {
@@ -1196,8 +1206,8 @@ Result KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata, std:
std::memcpy(params.name.data(), name.data(), sizeof(params.name));
// Initialize for application process.
- R_TRY(this->Initialize(params, metadata.GetKernelCapabilities(), res_limit,
- KMemoryManager::Pool::Application, aslr_space_start));
+ R_TRY(this->Initialize(params, metadata.GetKernelCapabilities(), res_limit, pool,
+ aslr_space_start));
// Assign remaining properties.
m_is_hbl = is_hbl;
@@ -1223,22 +1233,25 @@ void KProcess::LoadModule(CodeSet code_set, KProcessAddress base_addr) {
ReprotectSegment(code_set.DataSegment(), Svc::MemoryPermission::ReadWrite);
#ifdef HAS_NCE
- if (Settings::IsNceEnabled()) {
+ if (this->IsApplication() && Settings::IsNceEnabled()) {
auto& buffer = m_kernel.System().DeviceMemory().buffer;
const auto& code = code_set.CodeSegment();
const auto& patch = code_set.PatchSegment();
- buffer.Protect(GetInteger(base_addr + code.addr), code.size, true, true, true);
- buffer.Protect(GetInteger(base_addr + patch.addr), patch.size, true, true, true);
+ buffer.Protect(GetInteger(base_addr + code.addr), code.size,
+ Common::MemoryPermission::Read | Common::MemoryPermission::Execute);
+ buffer.Protect(GetInteger(base_addr + patch.addr), patch.size,
+ Common::MemoryPermission::Read | Common::MemoryPermission::Execute);
ReprotectSegment(code_set.PatchSegment(), Svc::MemoryPermission::None);
}
#endif
}
void KProcess::InitializeInterfaces() {
- this->GetMemory().SetCurrentPageTable(*this);
+ m_exclusive_monitor =
+ Core::MakeExclusiveMonitor(this->GetMemory(), Core::Hardware::NUM_CPU_CORES);
#ifdef HAS_NCE
- if (this->Is64Bit() && Settings::IsNceEnabled()) {
+ if (this->IsApplication() && Settings::IsNceEnabled()) {
for (size_t i = 0; i < Core::Hardware::NUM_CPU_CORES; i++) {
m_arm_interfaces[i] = std::make_unique<Core::ArmNce>(m_kernel.System(), true, i);
}
@@ -1248,13 +1261,13 @@ void KProcess::InitializeInterfaces() {
for (size_t i = 0; i < Core::Hardware::NUM_CPU_CORES; i++) {
m_arm_interfaces[i] = std::make_unique<Core::ArmDynarmic64>(
m_kernel.System(), m_kernel.IsMulticore(), this,
- static_cast<Core::DynarmicExclusiveMonitor&>(m_kernel.GetExclusiveMonitor()), i);
+ static_cast<Core::DynarmicExclusiveMonitor&>(*m_exclusive_monitor), i);
}
} else {
for (size_t i = 0; i < Core::Hardware::NUM_CPU_CORES; i++) {
m_arm_interfaces[i] = std::make_unique<Core::ArmDynarmic32>(
m_kernel.System(), m_kernel.IsMulticore(), this,
- static_cast<Core::DynarmicExclusiveMonitor&>(m_kernel.GetExclusiveMonitor()), i);
+ static_cast<Core::DynarmicExclusiveMonitor&>(*m_exclusive_monitor), i);
}
}
}
@@ -1305,9 +1318,10 @@ bool KProcess::RemoveWatchpoint(KProcessAddress addr, u64 size, DebugWatchpointT
return true;
}
-Core::Memory::Memory& KProcess::GetMemory() const {
- // TODO: per-process memory
- return m_kernel.System().ApplicationMemory();
+void KProcess::GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback) {
+ for (auto& manager : m_dirty_memory_managers) {
+ manager.Gather(callback);
+ }
}
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_process.h b/src/core/hle/kernel/k_process.h
index 4b114e39b..53c0e3316 100644
--- a/src/core/hle/kernel/k_process.h
+++ b/src/core/hle/kernel/k_process.h
@@ -7,6 +7,7 @@
#include "core/arm/arm_interface.h"
#include "core/file_sys/program_metadata.h"
+#include "core/gpu_dirty_memory_manager.h"
#include "core/hle/kernel/code_set.h"
#include "core/hle/kernel/k_address_arbiter.h"
#include "core/hle/kernel/k_capabilities.h"
@@ -17,6 +18,7 @@
#include "core/hle/kernel/k_system_resource.h"
#include "core/hle/kernel/k_thread.h"
#include "core/hle/kernel/k_thread_local_page.h"
+#include "core/memory.h"
namespace Kernel {
@@ -126,6 +128,9 @@ private:
#ifdef HAS_NCE
std::unordered_map<u64, u64> m_post_handlers{};
#endif
+ std::array<Core::GPUDirtyMemoryManager, Core::Hardware::NUM_CPU_CORES> m_dirty_memory_managers;
+ std::unique_ptr<Core::ExclusiveMonitor> m_exclusive_monitor;
+ Core::Memory::Memory m_memory;
private:
Result StartTermination();
@@ -502,7 +507,15 @@ public:
void InitializeInterfaces();
- Core::Memory::Memory& GetMemory() const;
+ Core::Memory::Memory& GetMemory() {
+ return m_memory;
+ }
+
+ void GatherGPUDirtyMemory(std::function<void(VAddr, size_t)>& callback);
+
+ Core::ExclusiveMonitor& GetExclusiveMonitor() const {
+ return *m_exclusive_monitor;
+ }
public:
// Overridden parent functions.
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index e33a88e24..adaabdd6d 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -8,6 +8,7 @@
#include "common/common_types.h"
#include "common/logging/log.h"
#include "common/scope_exit.h"
+#include "common/scratch_buffer.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_client_port.h"
@@ -29,12 +30,138 @@ namespace Kernel {
namespace {
+constexpr inline size_t PointerTransferBufferAlignment = 0x10;
+constexpr inline size_t ReceiveListDataSize =
+ MessageBuffer::MessageHeader::ReceiveListCountType_CountMax *
+ MessageBuffer::ReceiveListEntry::GetDataSize() / sizeof(u32);
+
+using ThreadQueueImplForKServerSessionRequest = KThreadQueue;
+
+class ReceiveList {
+public:
+ static constexpr int GetEntryCount(const MessageBuffer::MessageHeader& header) {
+ const auto count = header.GetReceiveListCount();
+ switch (count) {
+ case MessageBuffer::MessageHeader::ReceiveListCountType_None:
+ return 0;
+ case MessageBuffer::MessageHeader::ReceiveListCountType_ToMessageBuffer:
+ return 0;
+ case MessageBuffer::MessageHeader::ReceiveListCountType_ToSingleBuffer:
+ return 1;
+ default:
+ return count - MessageBuffer::MessageHeader::ReceiveListCountType_CountOffset;
+ }
+ }
+
+ explicit ReceiveList(const u32* dst_msg, uint64_t dst_address,
+ KProcessPageTable& dst_page_table,
+ const MessageBuffer::MessageHeader& dst_header,
+ const MessageBuffer::SpecialHeader& dst_special_header, size_t msg_size,
+ size_t out_offset, s32 dst_recv_list_idx, bool is_tls) {
+ m_recv_list_count = dst_header.GetReceiveListCount();
+ m_msg_buffer_end = dst_address + sizeof(u32) * out_offset;
+ m_msg_buffer_space_end = dst_address + msg_size;
+
+ // NOTE: Nintendo calculates the receive list index here using the special header.
+ // We pre-calculate it in the caller, and pass it as a parameter.
+ (void)dst_special_header;
+
+ const u32* recv_list = dst_msg + dst_recv_list_idx;
+ const auto entry_count = GetEntryCount(dst_header);
+
+ if (is_tls) {
+ // Messages from TLS to TLS are contained within one page.
+ std::memcpy(m_data.data(), recv_list,
+ entry_count * MessageBuffer::ReceiveListEntry::GetDataSize());
+ } else {
+ // If any buffer is not from TLS, perform a normal read instead.
+ uint64_t cur_addr = dst_address + dst_recv_list_idx * sizeof(u32);
+ dst_page_table.GetMemory().ReadBlock(
+ cur_addr, m_data.data(),
+ entry_count * MessageBuffer::ReceiveListEntry::GetDataSize());
+ }
+ }
+
+ bool IsIndex() const {
+ return m_recv_list_count >
+ static_cast<s32>(MessageBuffer::MessageHeader::ReceiveListCountType_CountOffset);
+ }
+
+ bool IsToMessageBuffer() const {
+ return m_recv_list_count ==
+ MessageBuffer::MessageHeader::ReceiveListCountType_ToMessageBuffer;
+ }
+
+ void GetBuffer(uint64_t& out, size_t size, int& key) const {
+ switch (m_recv_list_count) {
+ case MessageBuffer::MessageHeader::ReceiveListCountType_None: {
+ out = 0;
+ break;
+ }
+ case MessageBuffer::MessageHeader::ReceiveListCountType_ToMessageBuffer: {
+ const uint64_t buf =
+ Common::AlignUp(m_msg_buffer_end + key, PointerTransferBufferAlignment);
+
+ if ((buf < buf + size) && (buf + size <= m_msg_buffer_space_end)) {
+ out = buf;
+ key = static_cast<int>(buf + size - m_msg_buffer_end);
+ } else {
+ out = 0;
+ }
+ break;
+ }
+ case MessageBuffer::MessageHeader::ReceiveListCountType_ToSingleBuffer: {
+ const MessageBuffer::ReceiveListEntry entry(m_data[0], m_data[1]);
+ const uint64_t buf =
+ Common::AlignUp(entry.GetAddress() + key, PointerTransferBufferAlignment);
+
+ const uint64_t entry_addr = entry.GetAddress();
+ const size_t entry_size = entry.GetSize();
+
+ if ((buf < buf + size) && (entry_addr < entry_addr + entry_size) &&
+ (buf + size <= entry_addr + entry_size)) {
+ out = buf;
+ key = static_cast<int>(buf + size - entry_addr);
+ } else {
+ out = 0;
+ }
+ break;
+ }
+ default: {
+ if (key < m_recv_list_count -
+ static_cast<s32>(
+ MessageBuffer::MessageHeader::ReceiveListCountType_CountOffset)) {
+ const MessageBuffer::ReceiveListEntry entry(m_data[2 * key + 0],
+ m_data[2 * key + 1]);
+
+ const uintptr_t entry_addr = entry.GetAddress();
+ const size_t entry_size = entry.GetSize();
+
+ if ((entry_addr < entry_addr + entry_size) && (entry_size >= size)) {
+ out = entry_addr;
+ }
+ } else {
+ out = 0;
+ }
+ break;
+ }
+ }
+ }
+
+private:
+ std::array<u32, ReceiveListDataSize> m_data;
+ s32 m_recv_list_count;
+ uint64_t m_msg_buffer_end;
+ uint64_t m_msg_buffer_space_end;
+};
+
template <bool MoveHandleAllowed>
-Result ProcessMessageSpecialData(KProcess& dst_process, KProcess& src_process, KThread& src_thread,
- MessageBuffer& dst_msg, const MessageBuffer& src_msg,
- MessageBuffer::SpecialHeader& src_special_header) {
+Result ProcessMessageSpecialData(s32& offset, KProcess& dst_process, KProcess& src_process,
+ KThread& src_thread, const MessageBuffer& dst_msg,
+ const MessageBuffer& src_msg,
+ const MessageBuffer::SpecialHeader& src_special_header) {
// Copy the special header to the destination.
- s32 offset = dst_msg.Set(src_special_header);
+ offset = dst_msg.Set(src_special_header);
// Copy the process ID.
if (src_special_header.GetHasProcessId()) {
@@ -110,6 +237,102 @@ Result ProcessMessageSpecialData(KProcess& dst_process, KProcess& src_process, K
R_RETURN(result);
}
+Result ProcessReceiveMessagePointerDescriptors(int& offset, int& pointer_key,
+ KProcessPageTable& dst_page_table,
+ KProcessPageTable& src_page_table,
+ const MessageBuffer& dst_msg,
+ const MessageBuffer& src_msg,
+ const ReceiveList& dst_recv_list, bool dst_user) {
+ // Get the offset at the start of processing.
+ const int cur_offset = offset;
+
+ // Get the pointer desc.
+ MessageBuffer::PointerDescriptor src_desc(src_msg, cur_offset);
+ offset += static_cast<int>(MessageBuffer::PointerDescriptor::GetDataSize() / sizeof(u32));
+
+ // Extract address/size.
+ const uint64_t src_pointer = src_desc.GetAddress();
+ const size_t recv_size = src_desc.GetSize();
+ uint64_t recv_pointer = 0;
+
+ // Process the buffer, if it has a size.
+ if (recv_size > 0) {
+ // If using indexing, set index.
+ if (dst_recv_list.IsIndex()) {
+ pointer_key = src_desc.GetIndex();
+ }
+
+ // Get the buffer.
+ dst_recv_list.GetBuffer(recv_pointer, recv_size, pointer_key);
+ R_UNLESS(recv_pointer != 0, ResultOutOfResource);
+
+ // Perform the pointer data copy.
+ if (dst_user) {
+ R_TRY(src_page_table.CopyMemoryFromHeapToHeapWithoutCheckDestination(
+ dst_page_table, recv_pointer, recv_size, KMemoryState::FlagReferenceCounted,
+ KMemoryState::FlagReferenceCounted,
+ KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite,
+ KMemoryAttribute::Uncached | KMemoryAttribute::Locked, KMemoryAttribute::Locked,
+ src_pointer, KMemoryState::FlagLinearMapped, KMemoryState::FlagLinearMapped,
+ KMemoryPermission::UserRead, KMemoryAttribute::Uncached, KMemoryAttribute::None));
+ } else {
+ R_TRY(src_page_table.CopyMemoryFromLinearToUser(
+ recv_pointer, recv_size, src_pointer, KMemoryState::FlagLinearMapped,
+ KMemoryState::FlagLinearMapped, KMemoryPermission::UserRead,
+ KMemoryAttribute::Uncached, KMemoryAttribute::None));
+ }
+ }
+
+ // Set the output descriptor.
+ dst_msg.Set(cur_offset, MessageBuffer::PointerDescriptor(reinterpret_cast<void*>(recv_pointer),
+ recv_size, src_desc.GetIndex()));
+
+ R_SUCCEED();
+}
+
+constexpr Result GetMapAliasMemoryState(KMemoryState& out,
+ MessageBuffer::MapAliasDescriptor::Attribute attr) {
+ switch (attr) {
+ case MessageBuffer::MapAliasDescriptor::Attribute::Ipc:
+ out = KMemoryState::Ipc;
+ break;
+ case MessageBuffer::MapAliasDescriptor::Attribute::NonSecureIpc:
+ out = KMemoryState::NonSecureIpc;
+ break;
+ case MessageBuffer::MapAliasDescriptor::Attribute::NonDeviceIpc:
+ out = KMemoryState::NonDeviceIpc;
+ break;
+ default:
+ R_THROW(ResultInvalidCombination);
+ }
+
+ R_SUCCEED();
+}
+
+constexpr Result GetMapAliasTestStateAndAttributeMask(KMemoryState& out_state,
+ KMemoryAttribute& out_attr_mask,
+ KMemoryState state) {
+ switch (state) {
+ case KMemoryState::Ipc:
+ out_state = KMemoryState::FlagCanUseIpc;
+ out_attr_mask =
+ KMemoryAttribute::Uncached | KMemoryAttribute::DeviceShared | KMemoryAttribute::Locked;
+ break;
+ case KMemoryState::NonSecureIpc:
+ out_state = KMemoryState::FlagCanUseNonSecureIpc;
+ out_attr_mask = KMemoryAttribute::Uncached | KMemoryAttribute::Locked;
+ break;
+ case KMemoryState::NonDeviceIpc:
+ out_state = KMemoryState::FlagCanUseNonDeviceIpc;
+ out_attr_mask = KMemoryAttribute::Uncached | KMemoryAttribute::Locked;
+ break;
+ default:
+ R_THROW(ResultInvalidCombination);
+ }
+
+ R_SUCCEED();
+}
+
void CleanupSpecialData(KProcess& dst_process, u32* dst_msg_ptr, size_t dst_buffer_size) {
// Parse the message.
const MessageBuffer dst_msg(dst_msg_ptr, dst_buffer_size);
@@ -144,166 +367,855 @@ void CleanupSpecialData(KProcess& dst_process, u32* dst_msg_ptr, size_t dst_buff
}
}
-} // namespace
+Result CleanupServerHandles(KernelCore& kernel, uint64_t message, size_t buffer_size,
+ KPhysicalAddress message_paddr) {
+ // Server is assumed to be current thread.
+ KThread& thread = GetCurrentThread(kernel);
-using ThreadQueueImplForKServerSessionRequest = KThreadQueue;
+ // Get the linear message pointer.
+ u32* msg_ptr;
+ if (message) {
+ msg_ptr = kernel.System().DeviceMemory().GetPointer<u32>(message_paddr);
+ } else {
+ msg_ptr = GetCurrentMemory(kernel).GetPointer<u32>(thread.GetTlsAddress());
+ buffer_size = MessageBufferSize;
+ message = GetInteger(thread.GetTlsAddress());
+ }
-KServerSession::KServerSession(KernelCore& kernel)
- : KSynchronizationObject{kernel}, m_lock{m_kernel} {}
+ // Parse the message.
+ const MessageBuffer msg(msg_ptr, buffer_size);
+ const MessageBuffer::MessageHeader header(msg);
+ const MessageBuffer::SpecialHeader special_header(msg, header);
-KServerSession::~KServerSession() = default;
+ // Check that the size is big enough.
+ R_UNLESS(MessageBuffer::GetMessageBufferSize(header, special_header) <= buffer_size,
+ ResultInvalidCombination);
+
+ // If there's a special header, there may be move handles we need to close.
+ if (header.GetHasSpecialHeader()) {
+ // Determine the offset to the start of handles.
+ auto offset = msg.GetSpecialDataIndex(header, special_header);
+ if (special_header.GetHasProcessId()) {
+ offset += static_cast<int>(sizeof(u64) / sizeof(u32));
+ }
+ if (auto copy_count = special_header.GetCopyHandleCount(); copy_count > 0) {
+ offset += static_cast<int>((sizeof(Svc::Handle) * copy_count) / sizeof(u32));
+ }
-void KServerSession::Destroy() {
- m_parent->OnServerClosed();
+ // Get the handle table.
+ auto& handle_table = thread.GetOwnerProcess()->GetHandleTable();
- this->CleanupRequests();
+ // Close the handles.
+ for (auto i = 0; i < special_header.GetMoveHandleCount(); ++i) {
+ handle_table.Remove(msg.GetHandle(offset));
+ offset += static_cast<int>(sizeof(Svc::Handle) / sizeof(u32));
+ }
+ }
- m_parent->Close();
+ R_SUCCEED();
}
-void KServerSession::OnClientClosed() {
- KScopedLightLock lk{m_lock};
+Result CleanupServerMap(KSessionRequest* request, KProcess* server_process) {
+ // If there's no server process, there's nothing to clean up.
+ R_SUCCEED_IF(server_process == nullptr);
- // Handle any pending requests.
- KSessionRequest* prev_request = nullptr;
- while (true) {
- // Declare variables for processing the request.
- KSessionRequest* request = nullptr;
- KEvent* event = nullptr;
- KThread* thread = nullptr;
- bool cur_request = false;
- bool terminate = false;
+ // Get the page table.
+ auto& server_page_table = server_process->GetPageTable();
- // Get the next request.
- {
- KScopedSchedulerLock sl{m_kernel};
+ // Cleanup Send mappings.
+ for (size_t i = 0; i < request->GetSendCount(); ++i) {
+ R_TRY(server_page_table.CleanupForIpcServer(request->GetSendServerAddress(i),
+ request->GetSendSize(i),
+ request->GetSendMemoryState(i)));
+ }
- if (m_current_request != nullptr && m_current_request != prev_request) {
- // Set the request, open a reference as we process it.
- request = m_current_request;
- request->Open();
- cur_request = true;
+ // Cleanup Receive mappings.
+ for (size_t i = 0; i < request->GetReceiveCount(); ++i) {
+ R_TRY(server_page_table.CleanupForIpcServer(request->GetReceiveServerAddress(i),
+ request->GetReceiveSize(i),
+ request->GetReceiveMemoryState(i)));
+ }
- // Get thread and event for the request.
- thread = request->GetThread();
- event = request->GetEvent();
+ // Cleanup Exchange mappings.
+ for (size_t i = 0; i < request->GetExchangeCount(); ++i) {
+ R_TRY(server_page_table.CleanupForIpcServer(request->GetExchangeServerAddress(i),
+ request->GetExchangeSize(i),
+ request->GetExchangeMemoryState(i)));
+ }
- // If the thread is terminating, handle that.
- if (thread->IsTerminationRequested()) {
- request->ClearThread();
- request->ClearEvent();
- terminate = true;
- }
+ R_SUCCEED();
+}
- prev_request = request;
- } else if (!m_request_list.empty()) {
- // Pop the request from the front of the list.
- request = std::addressof(m_request_list.front());
- m_request_list.pop_front();
+Result CleanupClientMap(KSessionRequest* request, KProcessPageTable* client_page_table) {
+ // If there's no client page table, there's nothing to clean up.
+ R_SUCCEED_IF(client_page_table == nullptr);
- // Get thread and event for the request.
- thread = request->GetThread();
- event = request->GetEvent();
- }
+ // Cleanup Send mappings.
+ for (size_t i = 0; i < request->GetSendCount(); ++i) {
+ R_TRY(client_page_table->CleanupForIpcClient(request->GetSendClientAddress(i),
+ request->GetSendSize(i),
+ request->GetSendMemoryState(i)));
+ }
+
+ // Cleanup Receive mappings.
+ for (size_t i = 0; i < request->GetReceiveCount(); ++i) {
+ R_TRY(client_page_table->CleanupForIpcClient(request->GetReceiveClientAddress(i),
+ request->GetReceiveSize(i),
+ request->GetReceiveMemoryState(i)));
+ }
+
+ // Cleanup Exchange mappings.
+ for (size_t i = 0; i < request->GetExchangeCount(); ++i) {
+ R_TRY(client_page_table->CleanupForIpcClient(request->GetExchangeClientAddress(i),
+ request->GetExchangeSize(i),
+ request->GetExchangeMemoryState(i)));
+ }
+
+ R_SUCCEED();
+}
+
+Result CleanupMap(KSessionRequest* request, KProcess* server_process,
+ KProcessPageTable* client_page_table) {
+ // Cleanup the server map.
+ R_TRY(CleanupServerMap(request, server_process));
+
+ // Cleanup the client map.
+ R_TRY(CleanupClientMap(request, client_page_table));
+
+ R_SUCCEED();
+}
+
+Result ProcessReceiveMessageMapAliasDescriptors(int& offset, KProcessPageTable& dst_page_table,
+ KProcessPageTable& src_page_table,
+ const MessageBuffer& dst_msg,
+ const MessageBuffer& src_msg,
+ KSessionRequest* request, KMemoryPermission perm,
+ bool send) {
+ // Get the offset at the start of processing.
+ const int cur_offset = offset;
+
+ // Get the map alias descriptor.
+ MessageBuffer::MapAliasDescriptor src_desc(src_msg, cur_offset);
+ offset += static_cast<int>(MessageBuffer::MapAliasDescriptor::GetDataSize() / sizeof(u32));
+
+ // Extract address/size.
+ const KProcessAddress src_address = src_desc.GetAddress();
+ const size_t size = src_desc.GetSize();
+ KProcessAddress dst_address = 0;
+
+ // Determine the result memory state.
+ KMemoryState dst_state;
+ R_TRY(GetMapAliasMemoryState(dst_state, src_desc.GetAttribute()));
+
+ // Process the buffer, if it has a size.
+ if (size > 0) {
+ // Set up the source pages for ipc.
+ R_TRY(dst_page_table.SetupForIpc(std::addressof(dst_address), size, src_address,
+ src_page_table, perm, dst_state, send));
+
+ // Ensure that we clean up on failure.
+ ON_RESULT_FAILURE {
+ dst_page_table.CleanupForIpcServer(dst_address, size, dst_state);
+ src_page_table.CleanupForIpcClient(src_address, size, dst_state);
+ };
+
+ // Push the appropriate mapping.
+ if (perm == KMemoryPermission::UserRead) {
+ R_TRY(request->PushSend(src_address, dst_address, size, dst_state));
+ } else if (send) {
+ R_TRY(request->PushExchange(src_address, dst_address, size, dst_state));
+ } else {
+ R_TRY(request->PushReceive(src_address, dst_address, size, dst_state));
}
+ }
- // If there are no requests, we're done.
- if (request == nullptr) {
- break;
+ // Set the output descriptor.
+ dst_msg.Set(cur_offset,
+ MessageBuffer::MapAliasDescriptor(reinterpret_cast<void*>(GetInteger(dst_address)),
+ size, src_desc.GetAttribute()));
+
+ R_SUCCEED();
+}
+
+Result ReceiveMessage(KernelCore& kernel, bool& recv_list_broken, uint64_t dst_message_buffer,
+ size_t dst_buffer_size, KPhysicalAddress dst_message_paddr,
+ KThread& src_thread, uint64_t src_message_buffer, size_t src_buffer_size,
+ KServerSession* session, KSessionRequest* request) {
+ // Prepare variables for receive.
+ KThread& dst_thread = GetCurrentThread(kernel);
+ KProcess& dst_process = *(dst_thread.GetOwnerProcess());
+ KProcess& src_process = *(src_thread.GetOwnerProcess());
+ auto& dst_page_table = dst_process.GetPageTable();
+ auto& src_page_table = src_process.GetPageTable();
+
+ // NOTE: Session is used only for debugging, and so may go unused.
+ (void)session;
+
+ // The receive list is initially not broken.
+ recv_list_broken = false;
+
+ // Set the server process for the request.
+ request->SetServerProcess(std::addressof(dst_process));
+
+ // Determine the message buffers.
+ u32 *dst_msg_ptr, *src_msg_ptr;
+ bool dst_user, src_user;
+
+ if (dst_message_buffer) {
+ dst_msg_ptr = kernel.System().DeviceMemory().GetPointer<u32>(dst_message_paddr);
+ dst_user = true;
+ } else {
+ dst_msg_ptr = dst_page_table.GetMemory().GetPointer<u32>(dst_thread.GetTlsAddress());
+ dst_buffer_size = MessageBufferSize;
+ dst_message_buffer = GetInteger(dst_thread.GetTlsAddress());
+ dst_user = false;
+ }
+
+ if (src_message_buffer) {
+ // NOTE: Nintendo does not check the result of this GetPhysicalAddress call.
+ src_msg_ptr = src_page_table.GetMemory().GetPointer<u32>(src_message_buffer);
+ src_user = true;
+ } else {
+ src_msg_ptr = src_page_table.GetMemory().GetPointer<u32>(src_thread.GetTlsAddress());
+ src_buffer_size = MessageBufferSize;
+ src_message_buffer = GetInteger(src_thread.GetTlsAddress());
+ src_user = false;
+ }
+
+ // Parse the headers.
+ const MessageBuffer dst_msg(dst_msg_ptr, dst_buffer_size);
+ const MessageBuffer src_msg(src_msg_ptr, src_buffer_size);
+ const MessageBuffer::MessageHeader dst_header(dst_msg);
+ const MessageBuffer::MessageHeader src_header(src_msg);
+ const MessageBuffer::SpecialHeader dst_special_header(dst_msg, dst_header);
+ const MessageBuffer::SpecialHeader src_special_header(src_msg, src_header);
+
+ // Get the end of the source message.
+ const size_t src_end_offset =
+ MessageBuffer::GetRawDataIndex(src_header, src_special_header) + src_header.GetRawCount();
+
+ // Ensure that the headers fit.
+ R_UNLESS(MessageBuffer::GetMessageBufferSize(dst_header, dst_special_header) <= dst_buffer_size,
+ ResultInvalidCombination);
+ R_UNLESS(MessageBuffer::GetMessageBufferSize(src_header, src_special_header) <= src_buffer_size,
+ ResultInvalidCombination);
+
+ // Ensure the receive list offset is after the end of raw data.
+ if (dst_header.GetReceiveListOffset()) {
+ R_UNLESS(dst_header.GetReceiveListOffset() >=
+ MessageBuffer::GetRawDataIndex(dst_header, dst_special_header) +
+ dst_header.GetRawCount(),
+ ResultInvalidCombination);
+ }
+
+ // Ensure that the destination buffer is big enough to receive the source.
+ R_UNLESS(dst_buffer_size >= src_end_offset * sizeof(u32), ResultMessageTooLarge);
+
+ // Get the receive list.
+ const s32 dst_recv_list_idx =
+ MessageBuffer::GetReceiveListIndex(dst_header, dst_special_header);
+ ReceiveList dst_recv_list(dst_msg_ptr, dst_message_buffer, dst_page_table, dst_header,
+ dst_special_header, dst_buffer_size, src_end_offset,
+ dst_recv_list_idx, !dst_user);
+
+ // Ensure that the source special header isn't invalid.
+ const bool src_has_special_header = src_header.GetHasSpecialHeader();
+ if (src_has_special_header) {
+ // Sending move handles from client -> server is not allowed.
+ R_UNLESS(src_special_header.GetMoveHandleCount() == 0, ResultInvalidCombination);
+ }
+
+ // Prepare for further processing.
+ int pointer_key = 0;
+ int offset = dst_msg.Set(src_header);
+
+ // Set up a guard to make sure that we end up in a clean state on error.
+ ON_RESULT_FAILURE {
+ // Cleanup mappings.
+ CleanupMap(request, std::addressof(dst_process), std::addressof(src_page_table));
+
+ // Cleanup special data.
+ if (src_header.GetHasSpecialHeader()) {
+ CleanupSpecialData(dst_process, dst_msg_ptr, dst_buffer_size);
}
- // All requests must have threads.
- ASSERT(thread != nullptr);
+ // Cleanup the header if the receive list isn't broken.
+ if (!recv_list_broken) {
+ dst_msg.Set(dst_header);
+ if (dst_header.GetHasSpecialHeader()) {
+ dst_msg.Set(dst_special_header);
+ }
+ }
+ };
+
+ // Process any special data.
+ if (src_header.GetHasSpecialHeader()) {
+ // After we process, make sure we track whether the receive list is broken.
+ SCOPE_EXIT({
+ if (offset > dst_recv_list_idx) {
+ recv_list_broken = true;
+ }
+ });
- // Ensure that we close the request when done.
- SCOPE_EXIT({ request->Close(); });
+ // Process special data.
+ R_TRY(ProcessMessageSpecialData<false>(offset, dst_process, src_process, src_thread,
+ dst_msg, src_msg, src_special_header));
+ }
- // If we're terminating, close a reference to the thread and event.
- if (terminate) {
- thread->Close();
- if (event != nullptr) {
- event->Close();
+ // Process any pointer buffers.
+ for (auto i = 0; i < src_header.GetPointerCount(); ++i) {
+ // After we process, make sure we track whether the receive list is broken.
+ SCOPE_EXIT({
+ if (offset > dst_recv_list_idx) {
+ recv_list_broken = true;
+ }
+ });
+
+ R_TRY(ProcessReceiveMessagePointerDescriptors(
+ offset, pointer_key, dst_page_table, src_page_table, dst_msg, src_msg, dst_recv_list,
+ dst_user && dst_header.GetReceiveListCount() ==
+ MessageBuffer::MessageHeader::ReceiveListCountType_ToMessageBuffer));
+ }
+
+ // Process any map alias buffers.
+ for (auto i = 0; i < src_header.GetMapAliasCount(); ++i) {
+ // After we process, make sure we track whether the receive list is broken.
+ SCOPE_EXIT({
+ if (offset > dst_recv_list_idx) {
+ recv_list_broken = true;
}
+ });
+
+ // We process in order send, recv, exch. Buffers after send (recv/exch) are ReadWrite.
+ const KMemoryPermission perm = (i >= src_header.GetSendCount())
+ ? KMemoryPermission::UserReadWrite
+ : KMemoryPermission::UserRead;
+
+ // Buffer is send if it is send or exch.
+ const bool send = (i < src_header.GetSendCount()) ||
+ (i >= src_header.GetSendCount() + src_header.GetReceiveCount());
+
+ R_TRY(ProcessReceiveMessageMapAliasDescriptors(offset, dst_page_table, src_page_table,
+ dst_msg, src_msg, request, perm, send));
+ }
+
+ // Process any raw data.
+ if (const auto raw_count = src_header.GetRawCount(); raw_count != 0) {
+ // After we process, make sure we track whether the receive list is broken.
+ SCOPE_EXIT({
+ if (offset + raw_count > dst_recv_list_idx) {
+ recv_list_broken = true;
+ }
+ });
+
+ // Get the offset and size.
+ const size_t offset_words = offset * sizeof(u32);
+ const size_t raw_size = raw_count * sizeof(u32);
+
+ if (!dst_user && !src_user) {
+ // Fast case is TLS -> TLS, do raw memcpy if we can.
+ std::memcpy(dst_msg_ptr + offset, src_msg_ptr + offset, raw_size);
+ } else if (dst_user) {
+ // Determine how much fast size we can copy.
+ const size_t max_fast_size = std::min<size_t>(offset_words + raw_size, PageSize);
+ const size_t fast_size = max_fast_size - offset_words;
+
+ // Determine source state; if user buffer, we require heap, and otherwise only linear
+ // mapped (to enable tls use).
+ const auto src_state =
+ src_user ? KMemoryState::FlagReferenceCounted : KMemoryState::FlagLinearMapped;
+
+ // Determine the source permission. User buffer should be unmapped + read, TLS should be
+ // user readable.
+ const KMemoryPermission src_perm = static_cast<KMemoryPermission>(
+ src_user ? KMemoryPermission::NotMapped | KMemoryPermission::KernelRead
+ : KMemoryPermission::UserRead);
+
+ // Perform the fast part of the copy.
+ R_TRY(src_page_table.CopyMemoryFromLinearToKernel(
+ dst_msg_ptr + offset, fast_size, src_message_buffer + offset_words, src_state,
+ src_state, src_perm, KMemoryAttribute::Uncached, KMemoryAttribute::None));
+
+ // If the fast part of the copy didn't get everything, perform the slow part of the
+ // copy.
+ if (fast_size < raw_size) {
+ R_TRY(src_page_table.CopyMemoryFromHeapToHeap(
+ dst_page_table, dst_message_buffer + max_fast_size, raw_size - fast_size,
+ KMemoryState::FlagReferenceCounted, KMemoryState::FlagReferenceCounted,
+ KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite,
+ KMemoryAttribute::Uncached | KMemoryAttribute::Locked, KMemoryAttribute::Locked,
+ src_message_buffer + max_fast_size, src_state, src_state, src_perm,
+ KMemoryAttribute::Uncached, KMemoryAttribute::None));
+ }
+ } else /* if (src_user) */ {
+ // The source is a user buffer, so it should be unmapped + readable.
+ constexpr KMemoryPermission SourcePermission = static_cast<KMemoryPermission>(
+ KMemoryPermission::NotMapped | KMemoryPermission::KernelRead);
+
+ // Copy the memory.
+ R_TRY(src_page_table.CopyMemoryFromLinearToUser(
+ dst_message_buffer + offset_words, raw_size, src_message_buffer + offset_words,
+ KMemoryState::FlagReferenceCounted, KMemoryState::FlagReferenceCounted,
+ SourcePermission, KMemoryAttribute::Uncached, KMemoryAttribute::None));
}
+ }
- // If we need to, reply.
- if (event != nullptr && !cur_request) {
- // There must be no mappings.
- ASSERT(request->GetSendCount() == 0);
- ASSERT(request->GetReceiveCount() == 0);
- ASSERT(request->GetExchangeCount() == 0);
+ // We succeeded!
+ R_SUCCEED();
+}
- // // Get the process and page table.
- // KProcess *client_process = thread->GetOwnerProcess();
- // auto& client_pt = client_process->GetPageTable();
+Result ProcessSendMessageReceiveMapping(KProcessPageTable& src_page_table,
+ KProcessPageTable& dst_page_table,
+ KProcessAddress client_address,
+ KProcessAddress server_address, size_t size,
+ KMemoryState src_state) {
+ // If the size is zero, there's nothing to process.
+ R_SUCCEED_IF(size == 0);
+
+ // Get the memory state and attribute mask to test.
+ KMemoryState test_state;
+ KMemoryAttribute test_attr_mask;
+ R_TRY(GetMapAliasTestStateAndAttributeMask(test_state, test_attr_mask, src_state));
+
+ // Determine buffer extents.
+ KProcessAddress aligned_dst_start = Common::AlignDown(GetInteger(client_address), PageSize);
+ KProcessAddress aligned_dst_end = Common::AlignUp(GetInteger(client_address) + size, PageSize);
+ KProcessAddress mapping_dst_start = Common::AlignUp(GetInteger(client_address), PageSize);
+ KProcessAddress mapping_dst_end =
+ Common::AlignDown(GetInteger(client_address) + size, PageSize);
+
+ KProcessAddress mapping_src_end =
+ Common::AlignDown(GetInteger(server_address) + size, PageSize);
+
+ // If the start of the buffer is unaligned, handle that.
+ if (aligned_dst_start != mapping_dst_start) {
+ ASSERT(client_address < mapping_dst_start);
+ const size_t copy_size = std::min<size_t>(size, mapping_dst_start - client_address);
+ R_TRY(dst_page_table.CopyMemoryFromUserToLinear(
+ client_address, copy_size, test_state, test_state, KMemoryPermission::UserReadWrite,
+ test_attr_mask, KMemoryAttribute::None, server_address));
+ }
- // // Reply to the request.
- // ReplyAsyncError(client_process, request->GetAddress(), request->GetSize(),
- // ResultSessionClosed);
+ // If the end of the buffer is unaligned, handle that.
+ if (mapping_dst_end < aligned_dst_end &&
+ (aligned_dst_start == mapping_dst_start || aligned_dst_start < mapping_dst_end)) {
+ const size_t copy_size = client_address + size - mapping_dst_end;
+ R_TRY(dst_page_table.CopyMemoryFromUserToLinear(
+ mapping_dst_end, copy_size, test_state, test_state, KMemoryPermission::UserReadWrite,
+ test_attr_mask, KMemoryAttribute::None, mapping_src_end));
+ }
- // // Unlock the buffer.
- // // NOTE: Nintendo does not check the result of this.
- // client_pt.UnlockForIpcUserBuffer(request->GetAddress(), request->GetSize());
+ R_SUCCEED();
+}
- // Signal the event.
- event->Signal();
+Result ProcessSendMessagePointerDescriptors(int& offset, int& pointer_key,
+ KProcessPageTable& src_page_table,
+ KProcessPageTable& dst_page_table,
+ const MessageBuffer& dst_msg,
+ const MessageBuffer& src_msg,
+ const ReceiveList& dst_recv_list, bool dst_user) {
+ // Get the offset at the start of processing.
+ const int cur_offset = offset;
+
+ // Get the pointer desc.
+ MessageBuffer::PointerDescriptor src_desc(src_msg, cur_offset);
+ offset += static_cast<int>(MessageBuffer::PointerDescriptor::GetDataSize() / sizeof(u32));
+
+ // Extract address/size.
+ const uint64_t src_pointer = src_desc.GetAddress();
+ const size_t recv_size = src_desc.GetSize();
+ uint64_t recv_pointer = 0;
+
+ // Process the buffer, if it has a size.
+ if (recv_size > 0) {
+ // If using indexing, set index.
+ if (dst_recv_list.IsIndex()) {
+ pointer_key = src_desc.GetIndex();
}
+
+ // Get the buffer.
+ dst_recv_list.GetBuffer(recv_pointer, recv_size, pointer_key);
+ R_UNLESS(recv_pointer != 0, ResultOutOfResource);
+
+ // Perform the pointer data copy.
+ const bool dst_heap = dst_user && dst_recv_list.IsToMessageBuffer();
+ const auto dst_state =
+ dst_heap ? KMemoryState::FlagReferenceCounted : KMemoryState::FlagLinearMapped;
+ const KMemoryPermission dst_perm =
+ dst_heap ? KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite
+ : KMemoryPermission::UserReadWrite;
+ R_TRY(dst_page_table.CopyMemoryFromUserToLinear(
+ recv_pointer, recv_size, dst_state, dst_state, dst_perm, KMemoryAttribute::Uncached,
+ KMemoryAttribute::None, src_pointer));
}
- // Notify.
- this->NotifyAvailable(ResultSessionClosed);
+ // Set the output descriptor.
+ dst_msg.Set(cur_offset, MessageBuffer::PointerDescriptor(reinterpret_cast<void*>(recv_pointer),
+ recv_size, src_desc.GetIndex()));
+
+ R_SUCCEED();
}
-bool KServerSession::IsSignaled() const {
- ASSERT(KScheduler::IsSchedulerLockedByCurrentThread(m_kernel));
+Result SendMessage(KernelCore& kernel, uint64_t src_message_buffer, size_t src_buffer_size,
+ KPhysicalAddress src_message_paddr, KThread& dst_thread,
+ uint64_t dst_message_buffer, size_t dst_buffer_size, KServerSession* session,
+ KSessionRequest* request) {
+ // Prepare variables for send.
+ KThread& src_thread = GetCurrentThread(kernel);
+ KProcess& dst_process = *(dst_thread.GetOwnerProcess());
+ KProcess& src_process = *(src_thread.GetOwnerProcess());
+ auto& dst_page_table = dst_process.GetPageTable();
+ auto& src_page_table = src_process.GetPageTable();
+
+ // NOTE: Session is used only for debugging, and so may go unused.
+ (void)session;
+
+ // Determine the message buffers.
+ u32 *dst_msg_ptr, *src_msg_ptr;
+ bool dst_user, src_user;
+
+ if (dst_message_buffer) {
+ // NOTE: Nintendo does not check the result of this GetPhysicalAddress call.
+ dst_msg_ptr = dst_page_table.GetMemory().GetPointer<u32>(dst_message_buffer);
+ dst_user = true;
+ } else {
+ dst_msg_ptr = dst_page_table.GetMemory().GetPointer<u32>(dst_thread.GetTlsAddress());
+ dst_buffer_size = MessageBufferSize;
+ dst_message_buffer = GetInteger(dst_thread.GetTlsAddress());
+ dst_user = false;
+ }
- // If the client is closed, we're always signaled.
- if (m_parent->IsClientClosed()) {
- return true;
+ if (src_message_buffer) {
+ src_msg_ptr = src_page_table.GetMemory().GetPointer<u32>(src_message_buffer);
+ src_user = true;
+ } else {
+ src_msg_ptr = src_page_table.GetMemory().GetPointer<u32>(src_thread.GetTlsAddress());
+ src_buffer_size = MessageBufferSize;
+ src_message_buffer = GetInteger(src_thread.GetTlsAddress());
+ src_user = false;
}
- // Otherwise, we're signaled if we have a request and aren't handling one.
- return !m_request_list.empty() && m_current_request == nullptr;
+ // Parse the headers.
+ const MessageBuffer dst_msg(dst_msg_ptr, dst_buffer_size);
+ const MessageBuffer src_msg(src_msg_ptr, src_buffer_size);
+ const MessageBuffer::MessageHeader dst_header(dst_msg);
+ const MessageBuffer::MessageHeader src_header(src_msg);
+ const MessageBuffer::SpecialHeader dst_special_header(dst_msg, dst_header);
+ const MessageBuffer::SpecialHeader src_special_header(src_msg, src_header);
+
+ // Get the end of the source message.
+ const size_t src_end_offset =
+ MessageBuffer::GetRawDataIndex(src_header, src_special_header) + src_header.GetRawCount();
+
+ // Declare variables for processing.
+ int offset = 0;
+ int pointer_key = 0;
+ bool processed_special_data = false;
+
+ // Send the message.
+ {
+ // Make sure that we end up in a clean state on error.
+ ON_RESULT_FAILURE {
+ // Cleanup special data.
+ if (processed_special_data) {
+ if (src_header.GetHasSpecialHeader()) {
+ CleanupSpecialData(dst_process, dst_msg_ptr, dst_buffer_size);
+ }
+ } else {
+ CleanupServerHandles(kernel, src_user ? src_message_buffer : 0, src_buffer_size,
+ src_message_paddr);
+ }
+
+ // Cleanup mappings.
+ CleanupMap(request, std::addressof(src_process), std::addressof(dst_page_table));
+ };
+
+ // Ensure that the headers fit.
+ R_UNLESS(MessageBuffer::GetMessageBufferSize(src_header, src_special_header) <=
+ src_buffer_size,
+ ResultInvalidCombination);
+ R_UNLESS(MessageBuffer::GetMessageBufferSize(dst_header, dst_special_header) <=
+ dst_buffer_size,
+ ResultInvalidCombination);
+
+ // Ensure the receive list offset is after the end of raw data.
+ if (dst_header.GetReceiveListOffset()) {
+ R_UNLESS(dst_header.GetReceiveListOffset() >=
+ MessageBuffer::GetRawDataIndex(dst_header, dst_special_header) +
+ dst_header.GetRawCount(),
+ ResultInvalidCombination);
+ }
+
+ // Ensure that the destination buffer is big enough to receive the source.
+ R_UNLESS(dst_buffer_size >= src_end_offset * sizeof(u32), ResultMessageTooLarge);
+
+ // Replies must have no buffers.
+ R_UNLESS(src_header.GetSendCount() == 0, ResultInvalidCombination);
+ R_UNLESS(src_header.GetReceiveCount() == 0, ResultInvalidCombination);
+ R_UNLESS(src_header.GetExchangeCount() == 0, ResultInvalidCombination);
+
+ // Get the receive list.
+ const s32 dst_recv_list_idx =
+ MessageBuffer::GetReceiveListIndex(dst_header, dst_special_header);
+ ReceiveList dst_recv_list(dst_msg_ptr, dst_message_buffer, dst_page_table, dst_header,
+ dst_special_header, dst_buffer_size, src_end_offset,
+ dst_recv_list_idx, !dst_user);
+
+ // Handle any receive buffers.
+ for (size_t i = 0; i < request->GetReceiveCount(); ++i) {
+ R_TRY(ProcessSendMessageReceiveMapping(
+ src_page_table, dst_page_table, request->GetReceiveClientAddress(i),
+ request->GetReceiveServerAddress(i), request->GetReceiveSize(i),
+ request->GetReceiveMemoryState(i)));
+ }
+
+ // Handle any exchange buffers.
+ for (size_t i = 0; i < request->GetExchangeCount(); ++i) {
+ R_TRY(ProcessSendMessageReceiveMapping(
+ src_page_table, dst_page_table, request->GetExchangeClientAddress(i),
+ request->GetExchangeServerAddress(i), request->GetExchangeSize(i),
+ request->GetExchangeMemoryState(i)));
+ }
+
+ // Set the header.
+ offset = dst_msg.Set(src_header);
+
+ // Process any special data.
+ ASSERT(GetCurrentThreadPointer(kernel) == std::addressof(src_thread));
+ processed_special_data = true;
+ if (src_header.GetHasSpecialHeader()) {
+ R_TRY(ProcessMessageSpecialData<true>(offset, dst_process, src_process, src_thread,
+ dst_msg, src_msg, src_special_header));
+ }
+
+ // Process any pointer buffers.
+ for (auto i = 0; i < src_header.GetPointerCount(); ++i) {
+ R_TRY(ProcessSendMessagePointerDescriptors(
+ offset, pointer_key, src_page_table, dst_page_table, dst_msg, src_msg,
+ dst_recv_list,
+ dst_user &&
+ dst_header.GetReceiveListCount() ==
+ MessageBuffer::MessageHeader::ReceiveListCountType_ToMessageBuffer));
+ }
+
+ // Clear any map alias buffers.
+ for (auto i = 0; i < src_header.GetMapAliasCount(); ++i) {
+ offset = dst_msg.Set(offset, MessageBuffer::MapAliasDescriptor());
+ }
+
+ // Process any raw data.
+ if (const auto raw_count = src_header.GetRawCount(); raw_count != 0) {
+ // Get the offset and size.
+ const size_t offset_words = offset * sizeof(u32);
+ const size_t raw_size = raw_count * sizeof(u32);
+
+ if (!dst_user && !src_user) {
+ // Fast case is TLS -> TLS, do raw memcpy if we can.
+ std::memcpy(dst_msg_ptr + offset, src_msg_ptr + offset, raw_size);
+ } else if (src_user) {
+ // Determine how much fast size we can copy.
+ const size_t max_fast_size = std::min<size_t>(offset_words + raw_size, PageSize);
+ const size_t fast_size = max_fast_size - offset_words;
+
+ // Determine dst state; if user buffer, we require heap, and otherwise only linear
+ // mapped (to enable tls use).
+ const auto dst_state =
+ dst_user ? KMemoryState::FlagReferenceCounted : KMemoryState::FlagLinearMapped;
+
+ // Determine the dst permission. User buffer should be unmapped + read, TLS should
+ // be user readable.
+ const KMemoryPermission dst_perm =
+ dst_user ? KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite
+ : KMemoryPermission::UserReadWrite;
+
+ // Perform the fast part of the copy.
+ R_TRY(dst_page_table.CopyMemoryFromKernelToLinear(
+ dst_message_buffer + offset_words, fast_size, dst_state, dst_state, dst_perm,
+ KMemoryAttribute::Uncached, KMemoryAttribute::None, src_msg_ptr + offset));
+
+ // If the fast part of the copy didn't get everything, perform the slow part of the
+ // copy.
+ if (fast_size < raw_size) {
+ R_TRY(dst_page_table.CopyMemoryFromHeapToHeap(
+ dst_page_table, dst_message_buffer + max_fast_size, raw_size - fast_size,
+ dst_state, dst_state, dst_perm, KMemoryAttribute::Uncached,
+ KMemoryAttribute::None, src_message_buffer + max_fast_size,
+ KMemoryState::FlagReferenceCounted, KMemoryState::FlagReferenceCounted,
+ KMemoryPermission::NotMapped | KMemoryPermission::KernelRead,
+ KMemoryAttribute::Uncached | KMemoryAttribute::Locked,
+ KMemoryAttribute::Locked));
+ }
+ } else /* if (dst_user) */ {
+ // The destination is a user buffer, so it should be unmapped + readable.
+ constexpr KMemoryPermission DestinationPermission =
+ KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite;
+
+ // Copy the memory.
+ R_TRY(dst_page_table.CopyMemoryFromUserToLinear(
+ dst_message_buffer + offset_words, raw_size, KMemoryState::FlagReferenceCounted,
+ KMemoryState::FlagReferenceCounted, DestinationPermission,
+ KMemoryAttribute::Uncached, KMemoryAttribute::None,
+ src_message_buffer + offset_words));
+ }
+ }
+ }
+
+ // Perform (and validate) any remaining cleanup.
+ R_RETURN(CleanupMap(request, std::addressof(src_process), std::addressof(dst_page_table)));
}
-Result KServerSession::OnRequest(KSessionRequest* request) {
- // Create the wait queue.
- ThreadQueueImplForKServerSessionRequest wait_queue{m_kernel};
+void ReplyAsyncError(KProcess* to_process, uint64_t to_msg_buf, size_t to_msg_buf_size,
+ Result result) {
+ // Convert the address to a linear pointer.
+ u32* to_msg = to_process->GetMemory().GetPointer<u32>(to_msg_buf);
+
+ // Set the error.
+ MessageBuffer msg(to_msg, to_msg_buf_size);
+ msg.SetAsyncResult(result);
+}
+
+} // namespace
+
+KServerSession::KServerSession(KernelCore& kernel)
+ : KSynchronizationObject{kernel}, m_lock{m_kernel} {}
+
+KServerSession::~KServerSession() = default;
+
+void KServerSession::Destroy() {
+ m_parent->OnServerClosed();
+
+ this->CleanupRequests();
+
+ m_parent->Close();
+}
+
+Result KServerSession::ReceiveRequest(uintptr_t server_message, uintptr_t server_buffer_size,
+ KPhysicalAddress server_message_paddr,
+ std::shared_ptr<Service::HLERequestContext>* out_context,
+ std::weak_ptr<Service::SessionRequestManager> manager) {
+ // Lock the session.
+ KScopedLightLock lk{m_lock};
+
+ // Get the request and client thread.
+ KSessionRequest* request;
+ KThread* client_thread;
{
- // Lock the scheduler.
KScopedSchedulerLock sl{m_kernel};
- // Ensure that we can handle new requests.
- R_UNLESS(!m_parent->IsServerClosed(), ResultSessionClosed);
+ // Ensure that we can service the request.
+ R_UNLESS(!m_parent->IsClientClosed(), ResultSessionClosed);
- // Check that we're not terminating.
- R_UNLESS(!GetCurrentThread(m_kernel).IsTerminationRequested(), ResultTerminationRequested);
+ // Ensure we aren't already servicing a request.
+ R_UNLESS(m_current_request == nullptr, ResultNotFound);
- // Get whether we're empty.
- const bool was_empty = m_request_list.empty();
+ // Ensure we have a request to service.
+ R_UNLESS(!m_request_list.empty(), ResultNotFound);
- // Add the request to the list.
- request->Open();
- m_request_list.push_back(*request);
+ // Pop the first request from the list.
+ request = std::addressof(m_request_list.front());
+ m_request_list.pop_front();
- // If we were empty, signal.
- if (was_empty) {
- this->NotifyAvailable();
+ // Get the thread for the request.
+ client_thread = request->GetThread();
+ R_UNLESS(client_thread != nullptr, ResultSessionClosed);
+
+ // Open the client thread.
+ client_thread->Open();
+ }
+
+ SCOPE_EXIT({ client_thread->Close(); });
+
+ // Set the request as our current.
+ m_current_request = request;
+
+ // Get the client address.
+ uint64_t client_message = request->GetAddress();
+ size_t client_buffer_size = request->GetSize();
+ bool recv_list_broken = false;
+
+ // Receive the message.
+ Result result = ResultSuccess;
+
+ if (out_context != nullptr) {
+ // HLE request.
+ if (!client_message) {
+ client_message = GetInteger(client_thread->GetTlsAddress());
}
+ Core::Memory::Memory& memory{client_thread->GetOwnerProcess()->GetMemory()};
+ u32* cmd_buf{reinterpret_cast<u32*>(memory.GetPointer(client_message))};
+ *out_context =
+ std::make_shared<Service::HLERequestContext>(m_kernel, memory, this, client_thread);
+ (*out_context)->SetSessionRequestManager(manager);
+ (*out_context)->PopulateFromIncomingCommandBuffer(cmd_buf);
+ // We succeeded.
+ R_SUCCEED();
+ } else {
+ result = ReceiveMessage(m_kernel, recv_list_broken, server_message, server_buffer_size,
+ server_message_paddr, *client_thread, client_message,
+ client_buffer_size, this, request);
+ }
- // If we have a request event, this is asynchronous, and we don't need to wait.
- R_SUCCEED_IF(request->GetEvent() != nullptr);
+ // Handle cleanup on receive failure.
+ if (R_FAILED(result)) {
+ // Cache the result to return it to the client.
+ const Result result_for_client = result;
- // This is a synchronous request, so we should wait for our request to complete.
- GetCurrentThread(m_kernel).SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC);
- GetCurrentThread(m_kernel).BeginWait(std::addressof(wait_queue));
+ // Clear the current request.
+ {
+ KScopedSchedulerLock sl(m_kernel);
+ ASSERT(m_current_request == request);
+ m_current_request = nullptr;
+ if (!m_request_list.empty()) {
+ this->NotifyAvailable();
+ }
+ }
+
+ // Reply to the client.
+ {
+ // After we reply, close our reference to the request.
+ SCOPE_EXIT({ request->Close(); });
+
+ // Get the event to check whether the request is async.
+ if (KEvent* event = request->GetEvent(); event != nullptr) {
+ // The client sent an async request.
+ KProcess* client = client_thread->GetOwnerProcess();
+ auto& client_pt = client->GetPageTable();
+
+ // Send the async result.
+ if (R_FAILED(result_for_client)) {
+ ReplyAsyncError(client, client_message, client_buffer_size, result_for_client);
+ }
+
+ // Unlock the client buffer.
+ // NOTE: Nintendo does not check the result of this.
+ client_pt.UnlockForIpcUserBuffer(client_message, client_buffer_size);
+
+ // Signal the event.
+ event->Signal();
+ } else {
+ // End the client thread's wait.
+ KScopedSchedulerLock sl(m_kernel);
+
+ if (!client_thread->IsTerminationRequested()) {
+ client_thread->EndWait(result_for_client);
+ }
+ }
+ }
+
+ // Set the server result.
+ if (recv_list_broken) {
+ result = ResultReceiveListBroken;
+ } else {
+ result = ResultNotFound;
+ }
}
- return GetCurrentThread(m_kernel).GetWaitResult();
+ R_RETURN(result);
}
-Result KServerSession::SendReply(bool is_hle) {
+Result KServerSession::SendReply(uintptr_t server_message, uintptr_t server_buffer_size,
+ KPhysicalAddress server_message_paddr, bool is_hle) {
// Lock the session.
KScopedLightLock lk{m_lock};
@@ -327,7 +1239,7 @@ Result KServerSession::SendReply(bool is_hle) {
SCOPE_EXIT({ request->Close(); });
// Extract relevant information from the request.
- const uintptr_t client_message = request->GetAddress();
+ const uint64_t client_message = request->GetAddress();
const size_t client_buffer_size = request->GetSize();
KThread* client_thread = request->GetThread();
KEvent* event = request->GetEvent();
@@ -342,31 +1254,28 @@ Result KServerSession::SendReply(bool is_hle) {
// HLE servers write directly to a pointer to the thread command buffer. Therefore
// the reply has already been written in this case.
} else {
- Core::Memory::Memory& memory{client_thread->GetOwnerProcess()->GetMemory()};
- KThread* server_thread = GetCurrentThreadPointer(m_kernel);
- KProcess& src_process = *client_thread->GetOwnerProcess();
- KProcess& dst_process = *server_thread->GetOwnerProcess();
- UNIMPLEMENTED_IF(server_thread->GetOwnerProcess() != client_thread->GetOwnerProcess());
-
- auto* src_msg_buffer = memory.GetPointer<u32>(server_thread->GetTlsAddress());
- auto* dst_msg_buffer = memory.GetPointer<u32>(client_message);
- std::memcpy(dst_msg_buffer, src_msg_buffer, client_buffer_size);
-
- // Translate special header ad-hoc.
- MessageBuffer src_msg(src_msg_buffer, client_buffer_size);
- MessageBuffer::MessageHeader src_header(src_msg);
- MessageBuffer::SpecialHeader src_special_header(src_msg, src_header);
- if (src_header.GetHasSpecialHeader()) {
- MessageBuffer dst_msg(dst_msg_buffer, client_buffer_size);
- result = ProcessMessageSpecialData<true>(dst_process, src_process, *server_thread,
- dst_msg, src_msg, src_special_header);
- if (R_FAILED(result)) {
- CleanupSpecialData(dst_process, dst_msg_buffer, client_buffer_size);
- }
- }
+ result = SendMessage(m_kernel, server_message, server_buffer_size, server_message_paddr,
+ *client_thread, client_message, client_buffer_size, this, request);
+ }
+ } else if (!is_hle) {
+ // Otherwise, we'll need to do some cleanup.
+ KProcess* server_process = request->GetServerProcess();
+ KProcess* client_process =
+ (client_thread != nullptr) ? client_thread->GetOwnerProcess() : nullptr;
+ KProcessPageTable* client_page_table =
+ (client_process != nullptr) ? std::addressof(client_process->GetPageTable()) : nullptr;
+
+ // Cleanup server handles.
+ result = CleanupServerHandles(m_kernel, server_message, server_buffer_size,
+ server_message_paddr);
+
+ // Cleanup mappings.
+ Result cleanup_map_result = CleanupMap(request, server_process, client_page_table);
+
+ // If we successfully cleaned up handles, use the map cleanup result as our result.
+ if (R_SUCCEEDED(result)) {
+ result = cleanup_map_result;
}
- } else {
- result = ResultSessionClosed;
}
// Select a result for the client.
@@ -381,19 +1290,18 @@ Result KServerSession::SendReply(bool is_hle) {
// If there's a client thread, update it.
if (client_thread != nullptr) {
if (event != nullptr) {
- // // Get the client process/page table.
- // KProcess *client_process = client_thread->GetOwnerProcess();
- // KProcessPageTable *client_page_table = std::addressof(client_process->PageTable());
+ // Get the client process/page table.
+ KProcess* client_process = client_thread->GetOwnerProcess();
+ KProcessPageTable* client_page_table = std::addressof(client_process->GetPageTable());
- // // If we need to, reply with an async error.
- // if (R_FAILED(client_result)) {
- // ReplyAsyncError(client_process, client_message, client_buffer_size,
- // client_result);
- // }
+ // If we need to, reply with an async error.
+ if (R_FAILED(client_result)) {
+ ReplyAsyncError(client_process, client_message, client_buffer_size, client_result);
+ }
- // // Unlock the client buffer.
- // // NOTE: Nintendo does not check the result of this.
- // client_page_table->UnlockForIpcUserBuffer(client_message, client_buffer_size);
+ // Unlock the client buffer.
+ // NOTE: Nintendo does not check the result of this.
+ client_page_table->UnlockForIpcUserBuffer(client_message, client_buffer_size);
// Signal the event.
event->Signal();
@@ -410,91 +1318,53 @@ Result KServerSession::SendReply(bool is_hle) {
R_RETURN(result);
}
-Result KServerSession::ReceiveRequest(std::shared_ptr<Service::HLERequestContext>* out_context,
- std::weak_ptr<Service::SessionRequestManager> manager) {
- // Lock the session.
- KScopedLightLock lk{m_lock};
-
- // Get the request and client thread.
- KSessionRequest* request;
- KThread* client_thread;
+Result KServerSession::OnRequest(KSessionRequest* request) {
+ // Create the wait queue.
+ ThreadQueueImplForKServerSessionRequest wait_queue{m_kernel};
{
+ // Lock the scheduler.
KScopedSchedulerLock sl{m_kernel};
- // Ensure that we can service the request.
- R_UNLESS(!m_parent->IsClientClosed(), ResultSessionClosed);
-
- // Ensure we aren't already servicing a request.
- R_UNLESS(m_current_request == nullptr, ResultNotFound);
+ // Ensure that we can handle new requests.
+ R_UNLESS(!m_parent->IsServerClosed(), ResultSessionClosed);
- // Ensure we have a request to service.
- R_UNLESS(!m_request_list.empty(), ResultNotFound);
+ // Check that we're not terminating.
+ R_UNLESS(!GetCurrentThread(m_kernel).IsTerminationRequested(), ResultTerminationRequested);
- // Pop the first request from the list.
- request = std::addressof(m_request_list.front());
- m_request_list.pop_front();
+ // Get whether we're empty.
+ const bool was_empty = m_request_list.empty();
- // Get the thread for the request.
- client_thread = request->GetThread();
- R_UNLESS(client_thread != nullptr, ResultSessionClosed);
+ // Add the request to the list.
+ request->Open();
+ m_request_list.push_back(*request);
- // Open the client thread.
- client_thread->Open();
- }
+ // If we were empty, signal.
+ if (was_empty) {
+ this->NotifyAvailable();
+ }
- SCOPE_EXIT({ client_thread->Close(); });
+ // If we have a request event, this is asynchronous, and we don't need to wait.
+ R_SUCCEED_IF(request->GetEvent() != nullptr);
- // Set the request as our current.
- m_current_request = request;
+ // This is a synchronous request, so we should wait for our request to complete.
+ GetCurrentThread(m_kernel).SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC);
+ GetCurrentThread(m_kernel).BeginWait(std::addressof(wait_queue));
+ }
- // Get the client address.
- uintptr_t client_message = request->GetAddress();
- size_t client_buffer_size = request->GetSize();
- // bool recv_list_broken = false;
+ return GetCurrentThread(m_kernel).GetWaitResult();
+}
- if (!client_message) {
- client_message = GetInteger(client_thread->GetTlsAddress());
- client_buffer_size = MessageBufferSize;
- }
+bool KServerSession::IsSignaled() const {
+ ASSERT(KScheduler::IsSchedulerLockedByCurrentThread(m_kernel));
- // Receive the message.
- Core::Memory::Memory& memory{client_thread->GetOwnerProcess()->GetMemory()};
- if (out_context != nullptr) {
- // HLE request.
- u32* cmd_buf{reinterpret_cast<u32*>(memory.GetPointer(client_message))};
- *out_context =
- std::make_shared<Service::HLERequestContext>(m_kernel, memory, this, client_thread);
- (*out_context)->SetSessionRequestManager(manager);
- (*out_context)
- ->PopulateFromIncomingCommandBuffer(*client_thread->GetOwnerProcess(), cmd_buf);
- } else {
- KThread* server_thread = GetCurrentThreadPointer(m_kernel);
- KProcess& src_process = *client_thread->GetOwnerProcess();
- KProcess& dst_process = *server_thread->GetOwnerProcess();
- UNIMPLEMENTED_IF(client_thread->GetOwnerProcess() != server_thread->GetOwnerProcess());
-
- auto* src_msg_buffer = memory.GetPointer<u32>(client_message);
- auto* dst_msg_buffer = memory.GetPointer<u32>(server_thread->GetTlsAddress());
- std::memcpy(dst_msg_buffer, src_msg_buffer, client_buffer_size);
-
- // Translate special header ad-hoc.
- // TODO: fix this mess
- MessageBuffer src_msg(src_msg_buffer, client_buffer_size);
- MessageBuffer::MessageHeader src_header(src_msg);
- MessageBuffer::SpecialHeader src_special_header(src_msg, src_header);
- if (src_header.GetHasSpecialHeader()) {
- MessageBuffer dst_msg(dst_msg_buffer, client_buffer_size);
- Result res = ProcessMessageSpecialData<false>(dst_process, src_process, *client_thread,
- dst_msg, src_msg, src_special_header);
- if (R_FAILED(res)) {
- CleanupSpecialData(dst_process, dst_msg_buffer, client_buffer_size);
- }
- }
+ // If the client is closed, we're always signaled.
+ if (m_parent->IsClientClosed()) {
+ return true;
}
- // We succeeded.
- R_SUCCEED();
+ // Otherwise, we're signaled if we have a request and aren't handling one.
+ return !m_request_list.empty() && m_current_request == nullptr;
}
void KServerSession::CleanupRequests() {
@@ -527,31 +1397,30 @@ void KServerSession::CleanupRequests() {
SCOPE_EXIT({ request->Close(); });
// Extract relevant information from the request.
- // const uintptr_t client_message = request->GetAddress();
- // const size_t client_buffer_size = request->GetSize();
+ const uint64_t client_message = request->GetAddress();
+ const size_t client_buffer_size = request->GetSize();
KThread* client_thread = request->GetThread();
KEvent* event = request->GetEvent();
- // KProcess *server_process = request->GetServerProcess();
- // KProcess *client_process = (client_thread != nullptr) ?
- // client_thread->GetOwnerProcess() : nullptr;
- // KProcessPageTable *client_page_table = (client_process != nullptr) ?
- // std::addressof(client_process->GetPageTable())
- // : nullptr;
+ KProcess* server_process = request->GetServerProcess();
+ KProcess* client_process =
+ (client_thread != nullptr) ? client_thread->GetOwnerProcess() : nullptr;
+ KProcessPageTable* client_page_table =
+ (client_process != nullptr) ? std::addressof(client_process->GetPageTable()) : nullptr;
// Cleanup the mappings.
- // Result result = CleanupMap(request, server_process, client_page_table);
+ Result result = CleanupMap(request, server_process, client_page_table);
// If there's a client thread, update it.
if (client_thread != nullptr) {
if (event != nullptr) {
- // // We need to reply async.
- // ReplyAsyncError(client_process, client_message, client_buffer_size,
- // (R_SUCCEEDED(result) ? ResultSessionClosed : result));
+ // We need to reply async.
+ ReplyAsyncError(client_process, client_message, client_buffer_size,
+ (R_SUCCEEDED(result) ? ResultSessionClosed : result));
- // // Unlock the client buffer.
+ // Unlock the client buffer.
// NOTE: Nintendo does not check the result of this.
- // client_page_table->UnlockForIpcUserBuffer(client_message, client_buffer_size);
+ client_page_table->UnlockForIpcUserBuffer(client_message, client_buffer_size);
// Signal the event.
event->Signal();
@@ -567,4 +1436,97 @@ void KServerSession::CleanupRequests() {
}
}
+void KServerSession::OnClientClosed() {
+ KScopedLightLock lk{m_lock};
+
+ // Handle any pending requests.
+ KSessionRequest* prev_request = nullptr;
+ while (true) {
+ // Declare variables for processing the request.
+ KSessionRequest* request = nullptr;
+ KEvent* event = nullptr;
+ KThread* thread = nullptr;
+ bool cur_request = false;
+ bool terminate = false;
+
+ // Get the next request.
+ {
+ KScopedSchedulerLock sl{m_kernel};
+
+ if (m_current_request != nullptr && m_current_request != prev_request) {
+ // Set the request, open a reference as we process it.
+ request = m_current_request;
+ request->Open();
+ cur_request = true;
+
+ // Get thread and event for the request.
+ thread = request->GetThread();
+ event = request->GetEvent();
+
+ // If the thread is terminating, handle that.
+ if (thread->IsTerminationRequested()) {
+ request->ClearThread();
+ request->ClearEvent();
+ terminate = true;
+ }
+
+ prev_request = request;
+ } else if (!m_request_list.empty()) {
+ // Pop the request from the front of the list.
+ request = std::addressof(m_request_list.front());
+ m_request_list.pop_front();
+
+ // Get thread and event for the request.
+ thread = request->GetThread();
+ event = request->GetEvent();
+ }
+ }
+
+ // If there are no requests, we're done.
+ if (request == nullptr) {
+ break;
+ }
+
+ // All requests must have threads.
+ ASSERT(thread != nullptr);
+
+ // Ensure that we close the request when done.
+ SCOPE_EXIT({ request->Close(); });
+
+ // If we're terminating, close a reference to the thread and event.
+ if (terminate) {
+ thread->Close();
+ if (event != nullptr) {
+ event->Close();
+ }
+ }
+
+ // If we need to, reply.
+ if (event != nullptr && !cur_request) {
+ // There must be no mappings.
+ ASSERT(request->GetSendCount() == 0);
+ ASSERT(request->GetReceiveCount() == 0);
+ ASSERT(request->GetExchangeCount() == 0);
+
+ // Get the process and page table.
+ KProcess* client_process = thread->GetOwnerProcess();
+ auto& client_pt = client_process->GetPageTable();
+
+ // Reply to the request.
+ ReplyAsyncError(client_process, request->GetAddress(), request->GetSize(),
+ ResultSessionClosed);
+
+ // Unlock the buffer.
+ // NOTE: Nintendo does not check the result of this.
+ client_pt.UnlockForIpcUserBuffer(request->GetAddress(), request->GetSize());
+
+ // Signal the event.
+ event->Signal();
+ }
+ }
+
+ // Notify.
+ this->NotifyAvailable(ResultSessionClosed);
+}
+
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_server_session.h b/src/core/hle/kernel/k_server_session.h
index 403891919..2876c231b 100644
--- a/src/core/hle/kernel/k_server_session.h
+++ b/src/core/hle/kernel/k_server_session.h
@@ -49,14 +49,21 @@ public:
bool IsSignaled() const override;
void OnClientClosed();
- /// TODO: flesh these out to match the real kernel
Result OnRequest(KSessionRequest* request);
- Result SendReply(bool is_hle = false);
- Result ReceiveRequest(std::shared_ptr<Service::HLERequestContext>* out_context = nullptr,
+ Result SendReply(uintptr_t server_message, uintptr_t server_buffer_size,
+ KPhysicalAddress server_message_paddr, bool is_hle = false);
+ Result ReceiveRequest(uintptr_t server_message, uintptr_t server_buffer_size,
+ KPhysicalAddress server_message_paddr,
+ std::shared_ptr<Service::HLERequestContext>* out_context = nullptr,
std::weak_ptr<Service::SessionRequestManager> manager = {});
Result SendReplyHLE() {
- return SendReply(true);
+ R_RETURN(this->SendReply(0, 0, 0, true));
+ }
+
+ Result ReceiveRequestHLE(std::shared_ptr<Service::HLERequestContext>* out_context,
+ std::weak_ptr<Service::SessionRequestManager> manager) {
+ R_RETURN(this->ReceiveRequest(0, 0, 0, out_context, manager));
}
private:
diff --git a/src/core/hle/kernel/k_session.cpp b/src/core/hle/kernel/k_session.cpp
index 44d7a8f02..4a1f6027e 100644
--- a/src/core/hle/kernel/k_session.cpp
+++ b/src/core/hle/kernel/k_session.cpp
@@ -33,8 +33,7 @@ void KSession::Initialize(KClientPort* client_port, uintptr_t name) {
m_name = name;
// Set our owner process.
- //! FIXME: this is the wrong process!
- m_process = m_kernel.ApplicationProcess();
+ m_process = GetCurrentProcessPointer(m_kernel);
m_process->Open();
// Set our port.
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index 7d9a6e9cf..7d3421929 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -1258,11 +1258,11 @@ ThreadState KThread::RequestTerminate() {
// Change the thread's priority to be higher than any system thread's.
this->IncreaseBasePriority(TerminatingThreadPriority);
- // If the thread is runnable, send a termination interrupt to other cores.
+ // If the thread is runnable, send a termination interrupt to cores it may be running on.
if (this->GetState() == ThreadState::Runnable) {
- if (const u64 core_mask = m_physical_affinity_mask.GetAffinityMask() &
- ~(1ULL << GetCurrentCoreId(m_kernel));
- core_mask != 0) {
+ // NOTE: We do not mask the "current core", because this code may not actually be
+ // executing from the thread representing the "current core".
+ if (const u64 core_mask = m_physical_affinity_mask.GetAffinityMask(); core_mask != 0) {
Kernel::KInterruptManager::SendInterProcessorInterrupt(m_kernel, core_mask);
}
}
@@ -1422,8 +1422,7 @@ s32 GetCurrentCoreId(KernelCore& kernel) {
}
Core::Memory::Memory& GetCurrentMemory(KernelCore& kernel) {
- // TODO: per-process memory
- return kernel.System().ApplicationMemory();
+ return GetCurrentProcess(kernel).GetMemory();
}
KScopedDisableDispatch::~KScopedDisableDispatch() {
diff --git a/src/core/hle/kernel/k_thread.h b/src/core/hle/kernel/k_thread.h
index e9925d231..f13e232b2 100644
--- a/src/core/hle/kernel/k_thread.h
+++ b/src/core/hle/kernel/k_thread.h
@@ -314,11 +314,7 @@ public:
m_current_core_id = core;
}
- KProcess* GetOwnerProcess() {
- return m_parent;
- }
-
- const KProcess* GetOwnerProcess() const {
+ KProcess* GetOwnerProcess() const {
return m_parent;
}
diff --git a/src/core/hle/kernel/k_transfer_memory.h b/src/core/hle/kernel/k_transfer_memory.h
index 8a0b08761..530b45218 100644
--- a/src/core/hle/kernel/k_transfer_memory.h
+++ b/src/core/hle/kernel/k_transfer_memory.h
@@ -5,6 +5,7 @@
#include <optional>
+#include "core/hle/kernel/k_light_lock.h"
#include "core/hle/kernel/k_page_group.h"
#include "core/hle/kernel/slab_helpers.h"
#include "core/hle/kernel/svc_types.h"
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index e479dacde..1030f0c12 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -68,8 +68,6 @@ struct KernelCore::Impl {
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);
is_phantom_mode_for_singlecore = false;
@@ -121,13 +119,8 @@ struct KernelCore::Impl {
next_user_process_id = KProcess::ProcessIdMin;
next_thread_id = 1;
- global_handle_table->Finalize();
- global_handle_table.reset();
-
preemption_event = nullptr;
- exclusive_monitor.reset();
-
// Cleanup persistent kernel objects
auto CleanupObject = [](KAutoObject* obj) {
if (obj) {
@@ -191,8 +184,6 @@ struct KernelCore::Impl {
}
void InitializePhysicalCores() {
- exclusive_monitor =
- Core::MakeExclusiveMonitor(system.ApplicationMemory(), Core::Hardware::NUM_CPU_CORES);
for (u32 i = 0; i < Core::Hardware::NUM_CPU_CORES; i++) {
const s32 core{static_cast<s32>(i)};
@@ -247,7 +238,7 @@ struct KernelCore::Impl {
void InitializePreemption(KernelCore& kernel) {
preemption_event = Core::Timing::CreateEvent(
"PreemptionCallback",
- [this, &kernel](std::uintptr_t, s64 time,
+ [this, &kernel](s64 time,
std::chrono::nanoseconds) -> std::optional<std::chrono::nanoseconds> {
{
KScopedSchedulerLock lock(kernel);
@@ -791,10 +782,6 @@ struct KernelCore::Impl {
std::shared_ptr<Core::Timing::EventType> preemption_event;
- // This is the kernel's handle table or supervisor handle table which
- // stores all the objects in place.
- std::unique_ptr<KHandleTable> global_handle_table;
-
std::unique_ptr<KAutoObjectWithListContainer> global_object_list_container;
std::unique_ptr<KObjectNameGlobalData> object_name_global_data;
@@ -805,7 +792,6 @@ struct KernelCore::Impl {
std::mutex server_lock;
std::vector<std::unique_ptr<Service::ServerManager>> server_managers;
- std::unique_ptr<Core::ExclusiveMonitor> exclusive_monitor;
std::array<std::unique_ptr<Kernel::PhysicalCore>, Core::Hardware::NUM_CPU_CORES> cores;
// Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others
@@ -882,10 +868,6 @@ KResourceLimit* KernelCore::GetSystemResourceLimit() {
return impl->system_resource_limit;
}
-KScopedAutoObject<KThread> KernelCore::RetrieveThreadFromGlobalHandleTable(Handle handle) const {
- return impl->global_handle_table->GetObject<KThread>(handle);
-}
-
void KernelCore::AppendNewProcess(KProcess* process) {
impl->process_list.push_back(process);
}
@@ -959,14 +941,6 @@ Kernel::KHardwareTimer& KernelCore::HardwareTimer() {
return *impl->hardware_timer;
}
-Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() {
- return *impl->exclusive_monitor;
-}
-
-const Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() const {
- return *impl->exclusive_monitor;
-}
-
KAutoObjectWithListContainer& KernelCore::ObjectListContainer() {
return *impl->global_object_list_container;
}
@@ -1030,14 +1004,6 @@ u64 KernelCore::CreateNewUserProcessID() {
return impl->next_user_process_id++;
}
-KHandleTable& KernelCore::GlobalHandleTable() {
- return *impl->global_handle_table;
-}
-
-const KHandleTable& KernelCore::GlobalHandleTable() const {
- return *impl->global_handle_table;
-}
-
void KernelCore::RegisterCoreThread(std::size_t core_id) {
impl->RegisterCoreThread(core_id);
}
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 78c88902c..5d4102145 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -116,9 +116,6 @@ public:
/// Retrieves a shared pointer to the system resource limit instance.
KResourceLimit* GetSystemResourceLimit();
- /// Retrieves a shared pointer to a Thread instance within the thread wakeup handle table.
- KScopedAutoObject<KThread> RetrieveThreadFromGlobalHandleTable(Handle handle) const;
-
/// Adds the given shared pointer to an internal list of active processes.
void AppendNewProcess(KProcess* process);
@@ -170,10 +167,6 @@ public:
/// Stops execution of 'id' core, in order to reschedule a new thread.
void PrepareReschedule(std::size_t id);
- Core::ExclusiveMonitor& GetExclusiveMonitor();
-
- const Core::ExclusiveMonitor& GetExclusiveMonitor() const;
-
KAutoObjectWithListContainer& ObjectListContainer();
const KAutoObjectWithListContainer& ObjectListContainer() const;
diff --git a/src/core/hle/kernel/message_buffer.h b/src/core/hle/kernel/message_buffer.h
index 75b275310..d528a9bb3 100644
--- a/src/core/hle/kernel/message_buffer.h
+++ b/src/core/hle/kernel/message_buffer.h
@@ -18,13 +18,13 @@ public:
static constexpr inline u64 NullTag = 0;
public:
- enum class ReceiveListCountType : u32 {
- None = 0,
- ToMessageBuffer = 1,
- ToSingleBuffer = 2,
+ enum ReceiveListCountType : u32 {
+ ReceiveListCountType_None = 0,
+ ReceiveListCountType_ToMessageBuffer = 1,
+ ReceiveListCountType_ToSingleBuffer = 2,
- CountOffset = 2,
- CountMax = 13,
+ ReceiveListCountType_CountOffset = 2,
+ ReceiveListCountType_CountMax = 13,
};
private:
@@ -591,16 +591,16 @@ public:
// Add the size of the receive list.
const auto count = hdr.GetReceiveListCount();
switch (count) {
- case MessageHeader::ReceiveListCountType::None:
+ case MessageHeader::ReceiveListCountType_None:
break;
- case MessageHeader::ReceiveListCountType::ToMessageBuffer:
+ case MessageHeader::ReceiveListCountType_ToMessageBuffer:
break;
- case MessageHeader::ReceiveListCountType::ToSingleBuffer:
+ case MessageHeader::ReceiveListCountType_ToSingleBuffer:
msg_size += ReceiveListEntry::GetDataSize();
break;
default:
msg_size += (static_cast<s32>(count) -
- static_cast<s32>(MessageHeader::ReceiveListCountType::CountOffset)) *
+ static_cast<s32>(MessageHeader::ReceiveListCountType_CountOffset)) *
ReceiveListEntry::GetDataSize();
break;
}
diff --git a/src/core/hle/kernel/svc/svc_info.cpp b/src/core/hle/kernel/svc/svc_info.cpp
index ada998772..231e4d0e1 100644
--- a/src/core/hle/kernel/svc/svc_info.cpp
+++ b/src/core/hle/kernel/svc/svc_info.cpp
@@ -118,7 +118,6 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
R_SUCCEED();
case InfoType::IsApplication:
- LOG_WARNING(Kernel_SVC, "(STUBBED) Assuming process is application");
*result = process->IsApplication();
R_SUCCEED();
diff --git a/src/core/hle/kernel/svc/svc_ipc.cpp b/src/core/hle/kernel/svc/svc_ipc.cpp
index 47a3e7bb0..85cc4f561 100644
--- a/src/core/hle/kernel/svc/svc_ipc.cpp
+++ b/src/core/hle/kernel/svc/svc_ipc.cpp
@@ -48,8 +48,7 @@ Result ReplyAndReceiveImpl(KernelCore& kernel, int32_t* out_index, uintptr_t mes
};
// Send the reply.
- R_TRY(session->SendReply());
- // R_TRY(session->SendReply(message, buffer_size, message_paddr));
+ R_TRY(session->SendReply(message, buffer_size, message_paddr));
}
// Receive a message.
@@ -85,8 +84,7 @@ Result ReplyAndReceiveImpl(KernelCore& kernel, int32_t* out_index, uintptr_t mes
if (R_SUCCEEDED(result)) {
KServerSession* session = objs[index]->DynamicCast<KServerSession*>();
if (session != nullptr) {
- // result = session->ReceiveRequest(message, buffer_size, message_paddr);
- result = session->ReceiveRequest();
+ result = session->ReceiveRequest(message, buffer_size, message_paddr);
if (ResultNotFound == result) {
continue;
}
diff --git a/src/core/hle/kernel/svc_results.h b/src/core/hle/kernel/svc_results.h
index e1ad78607..38e71d516 100644
--- a/src/core/hle/kernel/svc_results.h
+++ b/src/core/hle/kernel/svc_results.h
@@ -38,7 +38,9 @@ constexpr Result ResultInvalidState{ErrorModule::Kernel, 125};
constexpr Result ResultReservedUsed{ErrorModule::Kernel, 126};
constexpr Result ResultPortClosed{ErrorModule::Kernel, 131};
constexpr Result ResultLimitReached{ErrorModule::Kernel, 132};
+constexpr Result ResultReceiveListBroken{ErrorModule::Kernel, 258};
constexpr Result ResultOutOfAddressSpace{ErrorModule::Kernel, 259};
+constexpr Result ResultMessageTooLarge{ErrorModule::Kernel, 260};
constexpr Result ResultInvalidId{ErrorModule::Kernel, 519};
} // namespace Kernel
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index a266d7c21..97eb56ff0 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -1513,8 +1513,7 @@ void ILibraryAppletCreator::CreateTransferMemoryStorage(HLERequestContext& ctx)
return;
}
- auto transfer_mem =
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(handle);
+ auto transfer_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(handle);
if (transfer_mem.IsNull()) {
LOG_ERROR(Service_AM, "transfer_mem is a nullptr for handle={:08X}", handle);
@@ -1524,8 +1523,7 @@ void ILibraryAppletCreator::CreateTransferMemoryStorage(HLERequestContext& ctx)
}
std::vector<u8> memory(transfer_mem->GetSize());
- system.ApplicationMemory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(),
- memory.size());
+ ctx.GetMemory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(), memory.size());
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
@@ -1547,8 +1545,7 @@ void ILibraryAppletCreator::CreateHandleStorage(HLERequestContext& ctx) {
return;
}
- auto transfer_mem =
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(handle);
+ auto transfer_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(handle);
if (transfer_mem.IsNull()) {
LOG_ERROR(Service_AM, "transfer_mem is a nullptr for handle={:08X}", handle);
@@ -1558,8 +1555,7 @@ void ILibraryAppletCreator::CreateHandleStorage(HLERequestContext& ctx) {
}
std::vector<u8> memory(transfer_mem->GetSize());
- system.ApplicationMemory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(),
- memory.size());
+ ctx.GetMemory().ReadBlock(transfer_mem->GetSourceAddress(), memory.data(), memory.size());
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp
index 23e56c77a..bd4ca753b 100644
--- a/src/core/hle/service/audio/audren_u.cpp
+++ b/src/core/hle/service/audio/audren_u.cpp
@@ -454,10 +454,8 @@ void AudRenU::OpenAudioRenderer(HLERequestContext& ctx) {
return;
}
- const auto& handle_table{system.ApplicationProcess()->GetHandleTable()};
- auto process{handle_table.GetObject<Kernel::KProcess>(process_handle)};
- auto transfer_memory{
- process->GetHandleTable().GetObject<Kernel::KTransferMemory>(transfer_memory_handle)};
+ auto process{ctx.GetObjectFromHandle<Kernel::KProcess>(process_handle)};
+ auto transfer_memory{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(transfer_memory_handle)};
const auto session_id{impl->GetSessionId()};
if (session_id == -1) {
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp
index 6a7bf9416..91f33aabd 100644
--- a/src/core/hle/service/audio/hwopus.cpp
+++ b/src/core/hle/service/audio/hwopus.cpp
@@ -278,9 +278,7 @@ void HwOpus::OpenHardwareOpusDecoder(HLERequestContext& ctx) {
auto params = rp.PopRaw<OpusParameters>();
auto transfer_memory_size{rp.Pop<u32>()};
auto transfer_memory_handle{ctx.GetCopyHandle(0)};
- auto transfer_memory{
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- transfer_memory_handle)};
+ auto transfer_memory{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(transfer_memory_handle)};
LOG_DEBUG(Service_Audio, "sample_rate {} channel_count {} transfer_memory_size 0x{:X}",
params.sample_rate, params.channel_count, transfer_memory_size);
@@ -323,9 +321,7 @@ void HwOpus::OpenHardwareOpusDecoderForMultiStream(HLERequestContext& ctx) {
auto transfer_memory_size{rp.Pop<u32>()};
auto transfer_memory_handle{ctx.GetCopyHandle(0)};
- auto transfer_memory{
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- transfer_memory_handle)};
+ auto transfer_memory{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(transfer_memory_handle)};
LOG_DEBUG(Service_Audio,
"sample_rate {} channel_count {} total_stream_count {} stereo_stream_count {} "
@@ -374,9 +370,7 @@ void HwOpus::OpenHardwareOpusDecoderEx(HLERequestContext& ctx) {
auto params = rp.PopRaw<OpusParametersEx>();
auto transfer_memory_size{rp.Pop<u32>()};
auto transfer_memory_handle{ctx.GetCopyHandle(0)};
- auto transfer_memory{
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- transfer_memory_handle)};
+ auto transfer_memory{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(transfer_memory_handle)};
LOG_DEBUG(Service_Audio, "sample_rate {} channel_count {} transfer_memory_size 0x{:X}",
params.sample_rate, params.channel_count, transfer_memory_size);
@@ -414,9 +408,7 @@ void HwOpus::OpenHardwareOpusDecoderForMultiStreamEx(HLERequestContext& ctx) {
auto transfer_memory_size{rp.Pop<u32>()};
auto transfer_memory_handle{ctx.GetCopyHandle(0)};
- auto transfer_memory{
- system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- transfer_memory_handle)};
+ auto transfer_memory{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(transfer_memory_handle)};
LOG_DEBUG(Service_Audio,
"sample_rate {} channel_count {} total_stream_count {} stereo_stream_count {} "
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp
index fe2ed8df8..31da86074 100644
--- a/src/core/hle/service/fatal/fatal.cpp
+++ b/src/core/hle/service/fatal/fatal.cpp
@@ -89,7 +89,7 @@ static void GenerateErrorReport(Core::System& system, Result error_code, const F
crash_report += fmt::format(" ESR: {:016x}\n", info.esr);
crash_report += fmt::format(" FAR: {:016x}\n", info.far);
crash_report += "\nBacktrace:\n";
- for (size_t i = 0; i < info.backtrace_size; i++) {
+ for (u32 i = 0; i < std::min<u32>(info.backtrace_size, 32); i++) {
crash_report +=
fmt::format(" Backtrace[{:02d}]: {:016x}\n", i, info.backtrace[i]);
}
diff --git a/src/core/hle/service/hid/controllers/applet_resource.cpp b/src/core/hle/service/hid/controllers/applet_resource.cpp
index c8e74c764..b4ff663c2 100644
--- a/src/core/hle/service/hid/controllers/applet_resource.cpp
+++ b/src/core/hle/service/hid/controllers/applet_resource.cpp
@@ -4,7 +4,7 @@
#include "core/core.h"
#include "core/hle/kernel/k_shared_memory.h"
#include "core/hle/service/hid/controllers/applet_resource.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
#include "core/hle/service/hid/errors.h"
namespace Service::HID {
@@ -164,6 +164,22 @@ Result AppletResource::GetSharedMemoryFormat(SharedMemoryFormat** out_shared_mem
return ResultSuccess;
}
+AruidData* AppletResource::GetAruidData(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index == AruidIndexMax) {
+ return nullptr;
+ }
+ return &data[aruid_index];
+}
+
+AruidData* AppletResource::GetAruidDataByIndex(std::size_t aruid_index) {
+ return &data[aruid_index];
+}
+
+bool AppletResource::IsVibrationAruidActive(u64 aruid) const {
+ return aruid == 0 || aruid == active_vibration_aruid;
+}
+
u64 AppletResource::GetIndexFromAruid(u64 aruid) {
for (std::size_t i = 0; i < AruidIndexMax; i++) {
if (registration_list.flag[i] == RegistrationStatus::Initialized &&
diff --git a/src/core/hle/service/hid/controllers/applet_resource.h b/src/core/hle/service/hid/controllers/applet_resource.h
index e7991f93a..0862fdc2f 100644
--- a/src/core/hle/service/hid/controllers/applet_resource.h
+++ b/src/core/hle/service/hid/controllers/applet_resource.h
@@ -4,6 +4,7 @@
#pragma once
#include <array>
+#include <mutex>
#include "common/bit_field.h"
#include "common/common_types.h"
@@ -20,6 +21,60 @@ class KSharedMemory;
namespace Service::HID {
struct SharedMemoryFormat;
+class AppletResource;
+class NPadResource;
+
+static constexpr std::size_t AruidIndexMax = 0x20;
+static constexpr u64 SystemAruid = 0;
+
+enum class RegistrationStatus : u32 {
+ None,
+ Initialized,
+ PendingDelete,
+};
+
+struct DataStatusFlag {
+ union {
+ u32 raw{};
+
+ BitField<0, 1, u32> is_initialized;
+ BitField<1, 1, u32> is_assigned;
+ BitField<16, 1, u32> enable_pad_input;
+ BitField<17, 1, u32> enable_six_axis_sensor;
+ BitField<18, 1, u32> bit_18;
+ BitField<19, 1, u32> is_palma_connectable;
+ BitField<20, 1, u32> enable_palma_boost_mode;
+ BitField<21, 1, u32> enable_touchscreen;
+ };
+};
+
+struct AruidRegisterList {
+ std::array<RegistrationStatus, AruidIndexMax> flag{};
+ std::array<u64, AruidIndexMax> aruid{};
+};
+static_assert(sizeof(AruidRegisterList) == 0x180, "AruidRegisterList is an invalid size");
+
+struct AruidData {
+ DataStatusFlag flag{};
+ u64 aruid{};
+ SharedMemoryFormat* shared_memory_format{nullptr};
+};
+
+struct HandheldConfig {
+ bool is_handheld_hid_enabled;
+ bool is_force_handheld;
+ bool is_joycon_rail_enabled;
+ bool is_force_handheld_style_vibration;
+};
+static_assert(sizeof(HandheldConfig) == 0x4, "HandheldConfig is an invalid size");
+
+struct AppletResourceHolder {
+ std::shared_ptr<AppletResource> applet_resource{nullptr};
+ std::recursive_mutex* shared_mutex{nullptr};
+ NPadResource* shared_npad_resource{nullptr};
+ std::shared_ptr<HandheldConfig> handheld_config{nullptr};
+ long* handle_1;
+};
class AppletResource {
public:
@@ -36,6 +91,10 @@ public:
u64 GetActiveAruid();
Result GetSharedMemoryHandle(Kernel::KSharedMemory** out_handle, u64 aruid);
Result GetSharedMemoryFormat(SharedMemoryFormat** out_shared_memory_format, u64 aruid);
+ AruidData* GetAruidData(u64 aruid);
+ AruidData* GetAruidDataByIndex(std::size_t aruid_index);
+
+ bool IsVibrationAruidActive(u64 aruid) const;
u64 GetIndexFromAruid(u64 aruid);
@@ -52,46 +111,12 @@ public:
Result UnregisterCoreAppletResource();
private:
- static constexpr std::size_t AruidIndexMax = 0x20;
-
- enum RegistrationStatus : u32 {
- None,
- Initialized,
- PendingDelete,
- };
-
- struct DataStatusFlag {
- union {
- u32 raw{};
-
- BitField<0, 1, u32> is_initialized;
- BitField<1, 1, u32> is_assigned;
- BitField<16, 1, u32> enable_pad_input;
- BitField<17, 1, u32> enable_six_axis_sensor;
- BitField<18, 1, u32> bit_18;
- BitField<19, 1, u32> is_palma_connectable;
- BitField<20, 1, u32> enable_palma_boost_mode;
- BitField<21, 1, u32> enable_touchscreen;
- };
- };
-
- struct AruidRegisterList {
- std::array<RegistrationStatus, AruidIndexMax> flag{};
- std::array<u64, AruidIndexMax> aruid{};
- };
- static_assert(sizeof(AruidRegisterList) == 0x180, "AruidRegisterList is an invalid size");
-
- struct AruidData {
- DataStatusFlag flag{};
- u64 aruid{};
- SharedMemoryFormat* shared_memory_format{nullptr};
- };
-
u64 active_aruid{};
AruidRegisterList registration_list{};
std::array<AruidData, AruidIndexMax> data{};
std::array<SharedMemoryHolder, AruidIndexMax> shared_memory_holder{};
s32 ref_counter{};
+ u64 active_vibration_aruid;
Core::System& system;
};
diff --git a/src/core/hle/service/hid/controllers/capture_button.cpp b/src/core/hle/service/hid/controllers/capture_button.cpp
new file mode 100644
index 000000000..7847c080e
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/capture_button.cpp
@@ -0,0 +1,39 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/capture_button.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+
+namespace Service::HID {
+
+CaptureButton::CaptureButton(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {}
+
+CaptureButton::~CaptureButton() = default;
+
+void CaptureButton::OnInit() {}
+
+void CaptureButton::OnRelease() {}
+
+void CaptureButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ if (!smart_update) {
+ return;
+ }
+
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ auto& header = data->shared_memory_format->capture_button.header;
+ header.timestamp = core_timing.GetGlobalTimeNs().count();
+ header.total_entry_count = 17;
+ header.entry_count = 0;
+ header.last_entry_index = 0;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/stubbed.h b/src/core/hle/service/hid/controllers/capture_button.h
index d2052fb17..dcc4715c5 100644
--- a/src/core/hle/service/hid/controllers/stubbed.h
+++ b/src/core/hle/service/hid/controllers/capture_button.h
@@ -6,12 +6,11 @@
#include "core/hle/service/hid/controllers/controller_base.h"
namespace Service::HID {
-struct CommonHeader;
-class Controller_Stubbed final : public ControllerBase {
+class CaptureButton final : public ControllerBase {
public:
- explicit Controller_Stubbed(Core::HID::HIDCore& hid_core_, CommonHeader& ring_lifo_header);
- ~Controller_Stubbed() override;
+ explicit CaptureButton(Core::HID::HIDCore& hid_core_);
+ ~CaptureButton() override;
// Called when the controller is initialized
void OnInit() override;
@@ -23,7 +22,6 @@ public:
void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
private:
- CommonHeader& header;
bool smart_update{};
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/console_six_axis.cpp b/src/core/hle/service/hid/controllers/console_six_axis.cpp
index 3961d2b5f..4b574c2e5 100644
--- a/src/core/hle/service/hid/controllers/console_six_axis.cpp
+++ b/src/core/hle/service/hid/controllers/console_six_axis.cpp
@@ -5,13 +5,11 @@
#include "core/hid/emulated_console.h"
#include "core/hid/hid_core.h"
#include "core/hle/service/hid/controllers/console_six_axis.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
-ConsoleSixAxis::ConsoleSixAxis(Core::HID::HIDCore& hid_core_,
- ConsoleSixAxisSensorSharedMemoryFormat& console_shared_memory)
- : ControllerBase{hid_core_}, shared_memory{console_shared_memory} {
+ConsoleSixAxis::ConsoleSixAxis(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {
console = hid_core.GetEmulatedConsole();
}
@@ -22,6 +20,16 @@ void ConsoleSixAxis::OnInit() {}
void ConsoleSixAxis::OnRelease() {}
void ConsoleSixAxis::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ ConsoleSixAxisSensorSharedMemoryFormat& shared_memory = data->shared_memory_format->console;
+
if (!IsControllerActivated()) {
return;
}
diff --git a/src/core/hle/service/hid/controllers/console_six_axis.h b/src/core/hle/service/hid/controllers/console_six_axis.h
index 3d1c9ce23..e3351f83c 100644
--- a/src/core/hle/service/hid/controllers/console_six_axis.h
+++ b/src/core/hle/service/hid/controllers/console_six_axis.h
@@ -10,12 +10,9 @@ class EmulatedConsole;
} // namespace Core::HID
namespace Service::HID {
-struct ConsoleSixAxisSensorSharedMemoryFormat;
-
class ConsoleSixAxis final : public ControllerBase {
public:
- explicit ConsoleSixAxis(Core::HID::HIDCore& hid_core_,
- ConsoleSixAxisSensorSharedMemoryFormat& console_shared_memory);
+ explicit ConsoleSixAxis(Core::HID::HIDCore& hid_core_);
~ConsoleSixAxis() override;
// Called when the controller is initialized
@@ -28,7 +25,6 @@ public:
void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
private:
- ConsoleSixAxisSensorSharedMemoryFormat& shared_memory;
Core::HID::EmulatedConsole* console = nullptr;
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/controller_base.cpp b/src/core/hle/service/hid/controllers/controller_base.cpp
index 0bcd87062..afca7154c 100644
--- a/src/core/hle/service/hid/controllers/controller_base.cpp
+++ b/src/core/hle/service/hid/controllers/controller_base.cpp
@@ -31,4 +31,11 @@ void ControllerBase::DeactivateController() {
bool ControllerBase::IsControllerActivated() const {
return is_activated;
}
+
+void ControllerBase::SetAppletResource(std::shared_ptr<AppletResource> resource,
+ std::recursive_mutex* resource_mutex) {
+ applet_resource = resource;
+ shared_mutex = resource_mutex;
+}
+
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/controller_base.h b/src/core/hle/service/hid/controllers/controller_base.h
index 4326c7821..b34b85ece 100644
--- a/src/core/hle/service/hid/controllers/controller_base.h
+++ b/src/core/hle/service/hid/controllers/controller_base.h
@@ -3,8 +3,11 @@
#pragma once
+#include <memory>
+
#include "common/common_types.h"
#include "core/hle/result.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
namespace Core::Timing {
class CoreTiming;
@@ -12,7 +15,7 @@ class CoreTiming;
namespace Core::HID {
class HIDCore;
-}
+} // namespace Core::HID
namespace Service::HID {
class ControllerBase {
@@ -39,8 +42,13 @@ public:
bool IsControllerActivated() const;
+ void SetAppletResource(std::shared_ptr<AppletResource> resource,
+ std::recursive_mutex* resource_mutex);
+
protected:
bool is_activated{false};
+ std::shared_ptr<AppletResource> applet_resource{nullptr};
+ std::recursive_mutex* shared_mutex{nullptr};
Core::HID::HIDCore& hid_core;
};
diff --git a/src/core/hle/service/hid/controllers/debug_mouse.cpp b/src/core/hle/service/hid/controllers/debug_mouse.cpp
new file mode 100644
index 000000000..ceeb78d36
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/debug_mouse.cpp
@@ -0,0 +1,64 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/frontend/emu_window.h"
+#include "core/hid/emulated_devices.h"
+#include "core/hid/hid_core.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/debug_mouse.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+
+namespace Service::HID {
+
+DebugMouse::DebugMouse(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {
+ emulated_devices = hid_core.GetEmulatedDevices();
+}
+
+DebugMouse::~DebugMouse() = default;
+
+void DebugMouse::OnInit() {}
+void DebugMouse::OnRelease() {}
+
+void DebugMouse::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ MouseSharedMemoryFormat& shared_memory = data->shared_memory_format->debug_mouse;
+
+ if (!IsControllerActivated()) {
+ shared_memory.mouse_lifo.buffer_count = 0;
+ shared_memory.mouse_lifo.buffer_tail = 0;
+ return;
+ }
+
+ next_state = {};
+
+ const auto& last_entry = shared_memory.mouse_lifo.ReadCurrentEntry().state;
+ next_state.sampling_number = last_entry.sampling_number + 1;
+
+ if (Settings::values.mouse_enabled) {
+ const auto& mouse_button_state = emulated_devices->GetMouseButtons();
+ const auto& mouse_position_state = emulated_devices->GetMousePosition();
+ const auto& mouse_wheel_state = emulated_devices->GetMouseWheel();
+ next_state.attribute.is_connected.Assign(1);
+ next_state.x = static_cast<s32>(mouse_position_state.x * Layout::ScreenUndocked::Width);
+ next_state.y = static_cast<s32>(mouse_position_state.y * Layout::ScreenUndocked::Height);
+ next_state.delta_x = next_state.x - last_entry.x;
+ next_state.delta_y = next_state.y - last_entry.y;
+ next_state.delta_wheel_x = mouse_wheel_state.x - last_mouse_wheel_state.x;
+ next_state.delta_wheel_y = mouse_wheel_state.y - last_mouse_wheel_state.y;
+
+ last_mouse_wheel_state = mouse_wheel_state;
+ next_state.button = mouse_button_state;
+ }
+
+ shared_memory.mouse_lifo.WriteNextEntry(next_state);
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/debug_mouse.h b/src/core/hle/service/hid/controllers/debug_mouse.h
new file mode 100644
index 000000000..ec939fa9f
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/debug_mouse.h
@@ -0,0 +1,34 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/hid/controllers/controller_base.h"
+
+namespace Core::HID {
+class EmulatedDevices;
+struct MouseState;
+struct AnalogStickState;
+} // namespace Core::HID
+
+namespace Service::HID {
+class DebugMouse final : public ControllerBase {
+public:
+ explicit DebugMouse(Core::HID::HIDCore& hid_core_);
+ ~DebugMouse() override;
+
+ // Called when the controller is initialized
+ void OnInit() override;
+
+ // When the controller is released
+ void OnRelease() override;
+
+ // When the controller is requesting an update for the shared memory
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+
+private:
+ Core::HID::MouseState next_state{};
+ Core::HID::AnalogStickState last_mouse_wheel_state{};
+ Core::HID::EmulatedDevices* emulated_devices = nullptr;
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/debug_pad.cpp b/src/core/hle/service/hid/controllers/debug_pad.cpp
index 7d2370b4f..dc83f90f3 100644
--- a/src/core/hle/service/hid/controllers/debug_pad.cpp
+++ b/src/core/hle/service/hid/controllers/debug_pad.cpp
@@ -6,14 +6,13 @@
#include "core/hid/emulated_controller.h"
#include "core/hid/hid_core.h"
#include "core/hid/hid_types.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/debug_pad.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
-DebugPad::DebugPad(Core::HID::HIDCore& hid_core_,
- DebugPadSharedMemoryFormat& debug_pad_shared_memory)
- : ControllerBase{hid_core_}, shared_memory{debug_pad_shared_memory} {
+DebugPad::DebugPad(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {
controller = hid_core.GetEmulatedController(Core::HID::NpadIdType::Other);
}
@@ -24,6 +23,16 @@ void DebugPad::OnInit() {}
void DebugPad::OnRelease() {}
void DebugPad::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ DebugPadSharedMemoryFormat& shared_memory = data->shared_memory_format->debug_pad;
+
if (!IsControllerActivated()) {
shared_memory.debug_pad_lifo.buffer_count = 0;
shared_memory.debug_pad_lifo.buffer_tail = 0;
diff --git a/src/core/hle/service/hid/controllers/debug_pad.h b/src/core/hle/service/hid/controllers/debug_pad.h
index 8ab29eca8..dd00b2402 100644
--- a/src/core/hle/service/hid/controllers/debug_pad.h
+++ b/src/core/hle/service/hid/controllers/debug_pad.h
@@ -15,12 +15,9 @@ class CoreTiming;
}
namespace Service::HID {
-struct DebugPadSharedMemoryFormat;
-
class DebugPad final : public ControllerBase {
public:
- explicit DebugPad(Core::HID::HIDCore& hid_core_,
- DebugPadSharedMemoryFormat& debug_pad_shared_memory);
+ explicit DebugPad(Core::HID::HIDCore& hid_core_);
~DebugPad() override;
// Called when the controller is initialized
@@ -34,7 +31,6 @@ public:
private:
DebugPadState next_state{};
- DebugPadSharedMemoryFormat& shared_memory;
Core::HID::EmulatedController* controller = nullptr;
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/digitizer.cpp b/src/core/hle/service/hid/controllers/digitizer.cpp
new file mode 100644
index 000000000..d5514c965
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/digitizer.cpp
@@ -0,0 +1,39 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/digitizer.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+
+namespace Service::HID {
+
+Digitizer::Digitizer(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {}
+
+Digitizer::~Digitizer() = default;
+
+void Digitizer::OnInit() {}
+
+void Digitizer::OnRelease() {}
+
+void Digitizer::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ if (!smart_update) {
+ return;
+ }
+
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ auto& header = data->shared_memory_format->digitizer.header;
+ header.timestamp = core_timing.GetGlobalTimeNs().count();
+ header.total_entry_count = 17;
+ header.entry_count = 0;
+ header.last_entry_index = 0;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/digitizer.h b/src/core/hle/service/hid/controllers/digitizer.h
new file mode 100644
index 000000000..d81f814c3
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/digitizer.h
@@ -0,0 +1,27 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/hid/controllers/controller_base.h"
+
+namespace Service::HID {
+
+class Digitizer final : public ControllerBase {
+public:
+ explicit Digitizer(Core::HID::HIDCore& hid_core_);
+ ~Digitizer() override;
+
+ // Called when the controller is initialized
+ void OnInit() override;
+
+ // When the controller is released
+ void OnRelease() override;
+
+ // When the controller is requesting an update for the shared memory
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+
+private:
+ bool smart_update{};
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/gesture.cpp b/src/core/hle/service/hid/controllers/gesture.cpp
index f658005f6..c73da13ee 100644
--- a/src/core/hle/service/hid/controllers/gesture.cpp
+++ b/src/core/hle/service/hid/controllers/gesture.cpp
@@ -6,8 +6,9 @@
#include "core/frontend/emu_window.h"
#include "core/hid/emulated_console.h"
#include "core/hid/hid_core.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/gesture.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
// HW is around 700, value is set to 400 to make it easier to trigger with mouse
@@ -21,24 +22,42 @@ constexpr f32 Square(s32 num) {
return static_cast<f32>(num * num);
}
-Gesture::Gesture(Core::HID::HIDCore& hid_core_, GestureSharedMemoryFormat& gesture_shared_memory)
- : ControllerBase(hid_core_), shared_memory{gesture_shared_memory} {
+Gesture::Gesture(Core::HID::HIDCore& hid_core_) : ControllerBase(hid_core_) {
console = hid_core.GetEmulatedConsole();
}
Gesture::~Gesture() = default;
void Gesture::OnInit() {
- shared_memory.gesture_lifo.buffer_count = 0;
- shared_memory.gesture_lifo.buffer_tail = 0;
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ shared_memory = &data->shared_memory_format->gesture;
+ shared_memory->gesture_lifo.buffer_count = 0;
+ shared_memory->gesture_lifo.buffer_tail = 0;
force_update = true;
}
void Gesture::OnRelease() {}
void Gesture::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ shared_memory = &data->shared_memory_format->gesture;
+
if (!IsControllerActivated()) {
- shared_memory.gesture_lifo.buffer_count = 0;
- shared_memory.gesture_lifo.buffer_tail = 0;
+ shared_memory->gesture_lifo.buffer_count = 0;
+ shared_memory->gesture_lifo.buffer_tail = 0;
return;
}
@@ -46,7 +65,7 @@ void Gesture::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
GestureProperties gesture = GetGestureProperties();
f32 time_difference =
- static_cast<f32>(shared_memory.gesture_lifo.timestamp - last_update_timestamp) /
+ static_cast<f32>(shared_memory->gesture_lifo.timestamp - last_update_timestamp) /
(1000 * 1000 * 1000);
// Only update if necessary
@@ -54,7 +73,7 @@ void Gesture::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
return;
}
- last_update_timestamp = shared_memory.gesture_lifo.timestamp;
+ last_update_timestamp = shared_memory->gesture_lifo.timestamp;
UpdateGestureSharedMemory(gesture, time_difference);
}
@@ -97,7 +116,7 @@ void Gesture::UpdateGestureSharedMemory(GestureProperties& gesture, f32 time_dif
GestureType type = GestureType::Idle;
GestureAttribute attributes{};
- const auto& last_entry = shared_memory.gesture_lifo.ReadCurrentEntry().state;
+ const auto& last_entry = shared_memory->gesture_lifo.ReadCurrentEntry().state;
// Reset next state to default
next_state.sampling_number = last_entry.sampling_number + 1;
@@ -127,7 +146,7 @@ void Gesture::UpdateGestureSharedMemory(GestureProperties& gesture, f32 time_dif
next_state.points = gesture.points;
last_gesture = gesture;
- shared_memory.gesture_lifo.WriteNextEntry(next_state);
+ shared_memory->gesture_lifo.WriteNextEntry(next_state);
}
void Gesture::NewGesture(GestureProperties& gesture, GestureType& type,
@@ -300,7 +319,7 @@ void Gesture::SetSwipeEvent(GestureProperties& gesture, GestureProperties& last_
}
const GestureState& Gesture::GetLastGestureEntry() const {
- return shared_memory.gesture_lifo.ReadCurrentEntry().state;
+ return shared_memory->gesture_lifo.ReadCurrentEntry().state;
}
GestureProperties Gesture::GetGestureProperties() {
diff --git a/src/core/hle/service/hid/controllers/gesture.h b/src/core/hle/service/hid/controllers/gesture.h
index 41fdfcd03..78da1552a 100644
--- a/src/core/hle/service/hid/controllers/gesture.h
+++ b/src/core/hle/service/hid/controllers/gesture.h
@@ -18,8 +18,7 @@ struct GestureSharedMemoryFormat;
class Gesture final : public ControllerBase {
public:
- explicit Gesture(Core::HID::HIDCore& hid_core_,
- GestureSharedMemoryFormat& gesture_shared_memory);
+ explicit Gesture(Core::HID::HIDCore& hid_core_);
~Gesture() override;
// Called when the controller is initialized
@@ -74,7 +73,7 @@ private:
GestureProperties GetGestureProperties();
GestureState next_state{};
- GestureSharedMemoryFormat& shared_memory;
+ GestureSharedMemoryFormat* shared_memory;
Core::HID::EmulatedConsole* console = nullptr;
std::array<Core::HID::TouchFinger, MAX_POINTS> fingers{};
diff --git a/src/core/hle/service/hid/controllers/home_button.cpp b/src/core/hle/service/hid/controllers/home_button.cpp
new file mode 100644
index 000000000..1397379f3
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/home_button.cpp
@@ -0,0 +1,39 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/home_button.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+
+namespace Service::HID {
+
+HomeButton::HomeButton(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {}
+
+HomeButton::~HomeButton() = default;
+
+void HomeButton::OnInit() {}
+
+void HomeButton::OnRelease() {}
+
+void HomeButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ if (!smart_update) {
+ return;
+ }
+
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ auto& header = data->shared_memory_format->home_button.header;
+ header.timestamp = core_timing.GetGlobalTimeNs().count();
+ header.total_entry_count = 17;
+ header.entry_count = 0;
+ header.last_entry_index = 0;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/home_button.h b/src/core/hle/service/hid/controllers/home_button.h
new file mode 100644
index 000000000..e91c2aa5d
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/home_button.h
@@ -0,0 +1,27 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/hid/controllers/controller_base.h"
+
+namespace Service::HID {
+
+class HomeButton final : public ControllerBase {
+public:
+ explicit HomeButton(Core::HID::HIDCore& hid_core_);
+ ~HomeButton() override;
+
+ // Called when the controller is initialized
+ void OnInit() override;
+
+ // When the controller is released
+ void OnRelease() override;
+
+ // When the controller is requesting an update for the shared memory
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+
+private:
+ bool smart_update{};
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp
index 871e5036a..c069bcbb2 100644
--- a/src/core/hle/service/hid/controllers/keyboard.cpp
+++ b/src/core/hle/service/hid/controllers/keyboard.cpp
@@ -5,14 +5,13 @@
#include "core/core_timing.h"
#include "core/hid/emulated_devices.h"
#include "core/hid/hid_core.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/keyboard.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
-Keyboard::Keyboard(Core::HID::HIDCore& hid_core_,
- KeyboardSharedMemoryFormat& keyboard_shared_memory)
- : ControllerBase{hid_core_}, shared_memory{keyboard_shared_memory} {
+Keyboard::Keyboard(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {
emulated_devices = hid_core.GetEmulatedDevices();
}
@@ -23,6 +22,16 @@ void Keyboard::OnInit() {}
void Keyboard::OnRelease() {}
void Keyboard::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ KeyboardSharedMemoryFormat& shared_memory = data->shared_memory_format->keyboard;
+
if (!IsControllerActivated()) {
shared_memory.keyboard_lifo.buffer_count = 0;
shared_memory.keyboard_lifo.buffer_tail = 0;
diff --git a/src/core/hle/service/hid/controllers/keyboard.h b/src/core/hle/service/hid/controllers/keyboard.h
index 4d72171b9..e8ca326c6 100644
--- a/src/core/hle/service/hid/controllers/keyboard.h
+++ b/src/core/hle/service/hid/controllers/keyboard.h
@@ -7,12 +7,9 @@
#include "core/hle/service/hid/controllers/types/keyboard_types.h"
namespace Service::HID {
-struct KeyboardSharedMemoryFormat;
-
class Keyboard final : public ControllerBase {
public:
- explicit Keyboard(Core::HID::HIDCore& hid_core_,
- KeyboardSharedMemoryFormat& keyboard_shared_memory);
+ explicit Keyboard(Core::HID::HIDCore& hid_core_);
~Keyboard() override;
// Called when the controller is initialized
@@ -26,7 +23,6 @@ public:
private:
KeyboardState next_state{};
- KeyboardSharedMemoryFormat& shared_memory;
Core::HID::EmulatedDevices* emulated_devices = nullptr;
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/mouse.cpp b/src/core/hle/service/hid/controllers/mouse.cpp
index de5b2c804..3a8d1751b 100644
--- a/src/core/hle/service/hid/controllers/mouse.cpp
+++ b/src/core/hle/service/hid/controllers/mouse.cpp
@@ -5,13 +5,13 @@
#include "core/frontend/emu_window.h"
#include "core/hid/emulated_devices.h"
#include "core/hid/hid_core.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/mouse.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
-Mouse::Mouse(Core::HID::HIDCore& hid_core_, MouseSharedMemoryFormat& mouse_shared_memory)
- : ControllerBase{hid_core_}, shared_memory{mouse_shared_memory} {
+Mouse::Mouse(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {
emulated_devices = hid_core.GetEmulatedDevices();
}
@@ -21,6 +21,16 @@ void Mouse::OnInit() {}
void Mouse::OnRelease() {}
void Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ MouseSharedMemoryFormat& shared_memory = data->shared_memory_format->mouse;
+
if (!IsControllerActivated()) {
shared_memory.mouse_lifo.buffer_count = 0;
shared_memory.mouse_lifo.buffer_tail = 0;
diff --git a/src/core/hle/service/hid/controllers/mouse.h b/src/core/hle/service/hid/controllers/mouse.h
index 363f316a5..cefad956c 100644
--- a/src/core/hle/service/hid/controllers/mouse.h
+++ b/src/core/hle/service/hid/controllers/mouse.h
@@ -12,11 +12,9 @@ struct AnalogStickState;
} // namespace Core::HID
namespace Service::HID {
-struct MouseSharedMemoryFormat;
-
class Mouse final : public ControllerBase {
public:
- explicit Mouse(Core::HID::HIDCore& hid_core_, MouseSharedMemoryFormat& mouse_shared_memory);
+ explicit Mouse(Core::HID::HIDCore& hid_core_);
~Mouse() override;
// Called when the controller is initialized
@@ -31,7 +29,6 @@ public:
private:
Core::HID::MouseState next_state{};
Core::HID::AnalogStickState last_mouse_wheel_state{};
- MouseSharedMemoryFormat& shared_memory;
Core::HID::EmulatedDevices* emulated_devices = nullptr;
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp
index 53a737cf5..17cd0d7a0 100644
--- a/src/core/hle/service/hid/controllers/npad.cpp
+++ b/src/core/hle/service/hid/controllers/npad.cpp
@@ -16,46 +16,102 @@
#include "core/hid/hid_core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_readable_event.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/npad.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
#include "core/hle/service/hid/errors.h"
#include "core/hle/service/hid/hid_util.h"
#include "core/hle/service/kernel_helpers.h"
namespace Service::HID {
-constexpr std::array<Core::HID::NpadIdType, 10> npad_id_list{
- Core::HID::NpadIdType::Player1, Core::HID::NpadIdType::Player2, Core::HID::NpadIdType::Player3,
- Core::HID::NpadIdType::Player4, Core::HID::NpadIdType::Player5, Core::HID::NpadIdType::Player6,
- Core::HID::NpadIdType::Player7, Core::HID::NpadIdType::Player8, Core::HID::NpadIdType::Other,
- Core::HID::NpadIdType::Handheld,
-};
-
-NPad::NPad(Core::HID::HIDCore& hid_core_, NpadSharedMemoryFormat& npad_shared_memory_format,
- KernelHelpers::ServiceContext& service_context_)
- : ControllerBase{hid_core_}, service_context{service_context_} {
- for (std::size_t i = 0; i < controller_data.size(); ++i) {
- auto& controller = controller_data[i];
- controller.shared_memory = &npad_shared_memory_format.npad_entry[i].internal_state;
- controller.device = hid_core.GetEmulatedControllerByIndex(i);
- controller.vibration[Core::HID::EmulatedDeviceIndex::LeftIndex].latest_vibration_value =
- Core::HID::DEFAULT_VIBRATION_VALUE;
- controller.vibration[Core::HID::EmulatedDeviceIndex::RightIndex].latest_vibration_value =
- Core::HID::DEFAULT_VIBRATION_VALUE;
- Core::HID::ControllerUpdateCallback engine_callback{
- .on_change = [this,
- i](Core::HID::ControllerTriggerType type) { ControllerUpdate(type, i); },
- .is_npad_service = true,
- };
- controller.callback_key = controller.device->SetCallback(engine_callback);
+
+NPad::NPad(Core::HID::HIDCore& hid_core_, KernelHelpers::ServiceContext& service_context_)
+ : hid_core{hid_core_}, service_context{service_context_}, npad_resource{service_context} {
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; ++aruid_index) {
+ for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
+ auto& controller = controller_data[aruid_index][i];
+ controller.device = hid_core.GetEmulatedControllerByIndex(i);
+ controller.vibration[Core::HID::EmulatedDeviceIndex::LeftIndex].latest_vibration_value =
+ Core::HID::DEFAULT_VIBRATION_VALUE;
+ controller.vibration[Core::HID::EmulatedDeviceIndex::RightIndex]
+ .latest_vibration_value = Core::HID::DEFAULT_VIBRATION_VALUE;
+ Core::HID::ControllerUpdateCallback engine_callback{
+ .on_change =
+ [this, i](Core::HID::ControllerTriggerType type) { ControllerUpdate(type, i); },
+ .is_npad_service = true,
+ };
+ controller.callback_key = controller.device->SetCallback(engine_callback);
+ }
}
}
NPad::~NPad() {
- for (std::size_t i = 0; i < controller_data.size(); ++i) {
- auto& controller = controller_data[i];
- controller.device->DeleteCallback(controller.callback_key);
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; ++aruid_index) {
+ for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
+ auto& controller = controller_data[aruid_index][i];
+ controller.device->DeleteCallback(controller.callback_key);
+ }
+ }
+}
+
+Result NPad::Activate() {
+ if (ref_counter == std::numeric_limits<s32>::max() - 1) {
+ return ResultNpadResourceOverflow;
+ }
+
+ if (ref_counter == 0) {
+ std::scoped_lock lock{mutex};
+
+ // TODO: Activate handlers and AbstractedPad
}
- OnRelease();
+
+ ref_counter++;
+ return ResultSuccess;
+}
+
+Result NPad::Activate(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ std::scoped_lock shared_lock{*applet_resource_holder.shared_mutex};
+
+ auto* data = applet_resource_holder.applet_resource->GetAruidData(aruid);
+ const auto aruid_index = applet_resource_holder.applet_resource->GetIndexFromAruid(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return ResultSuccess;
+ }
+
+ for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
+ auto& controller = controller_data[aruid_index][i];
+ controller.shared_memory = &data->shared_memory_format->npad.npad_entry[i].internal_state;
+ }
+
+ // Prefill controller buffers
+ for (auto& controller : controller_data[aruid_index]) {
+ auto* npad = controller.shared_memory;
+ npad->fullkey_color = {
+ .attribute = ColorAttribute::NoController,
+ .fullkey = {},
+ };
+ npad->joycon_color = {
+ .attribute = ColorAttribute::NoController,
+ .left = {},
+ .right = {},
+ };
+ // HW seems to initialize the first 19 entries
+ for (std::size_t i = 0; i < 19; ++i) {
+ WriteEmptyEntry(npad);
+ }
+ }
+
+ return ResultSuccess;
+}
+
+Result NPad::ActivateNpadResource() {
+ return npad_resource.Activate();
+}
+
+Result NPad::ActivateNpadResource(u64 aruid) {
+ return npad_resource.Activate(aruid);
}
void NPad::ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t controller_idx) {
@@ -64,41 +120,50 @@ void NPad::ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t c
ControllerUpdate(Core::HID::ControllerTriggerType::Battery, controller_idx);
return;
}
- if (controller_idx >= controller_data.size()) {
- return;
- }
- auto& controller = controller_data[controller_idx];
- const auto is_connected = controller.device->IsConnected();
- const auto npad_type = controller.device->GetNpadStyleIndex();
- const auto npad_id = controller.device->GetNpadIdType();
- switch (type) {
- case Core::HID::ControllerTriggerType::Connected:
- case Core::HID::ControllerTriggerType::Disconnected:
- if (is_connected == controller.is_connected) {
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; aruid_index++) {
+ if (controller_idx >= controller_data[aruid_index].size()) {
return;
}
- UpdateControllerAt(npad_type, npad_id, is_connected);
- break;
- case Core::HID::ControllerTriggerType::Battery: {
- if (!controller.device->IsConnected()) {
- return;
+
+ auto* data = applet_resource_holder.applet_resource->GetAruidDataByIndex(aruid_index);
+
+ if (!data->flag.is_assigned) {
+ continue;
+ }
+
+ auto& controller = controller_data[aruid_index][controller_idx];
+ const auto is_connected = controller.device->IsConnected();
+ const auto npad_type = controller.device->GetNpadStyleIndex();
+ const auto npad_id = controller.device->GetNpadIdType();
+ switch (type) {
+ case Core::HID::ControllerTriggerType::Connected:
+ case Core::HID::ControllerTriggerType::Disconnected:
+ if (is_connected == controller.is_connected) {
+ return;
+ }
+ UpdateControllerAt(data->aruid, npad_type, npad_id, is_connected);
+ break;
+ case Core::HID::ControllerTriggerType::Battery: {
+ if (!controller.device->IsConnected()) {
+ return;
+ }
+ auto* shared_memory = controller.shared_memory;
+ const auto& battery_level = controller.device->GetBattery();
+ shared_memory->battery_level_dual = battery_level.dual.battery_level;
+ shared_memory->battery_level_left = battery_level.left.battery_level;
+ shared_memory->battery_level_right = battery_level.right.battery_level;
+ break;
+ }
+ default:
+ break;
}
- auto* shared_memory = controller.shared_memory;
- const auto& battery_level = controller.device->GetBattery();
- shared_memory->battery_level_dual = battery_level.dual.battery_level;
- shared_memory->battery_level_left = battery_level.left.battery_level;
- shared_memory->battery_level_right = battery_level.right.battery_level;
- break;
- }
- default:
- break;
}
}
-void NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
- auto& controller = GetControllerFromNpadIdType(npad_id);
- if (!IsControllerSupported(controller.device->GetNpadStyleIndex())) {
+void NPad::InitNewlyAddedController(u64 aruid, Core::HID::NpadIdType npad_id) {
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
+ if (!npad_resource.IsControllerSupported(aruid, controller.device->GetNpadStyleIndex())) {
return;
}
LOG_DEBUG(Service_HID, "Npad connected {}", npad_id);
@@ -107,7 +172,7 @@ void NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
const auto& battery_level = controller.device->GetBattery();
auto* shared_memory = controller.shared_memory;
if (controller_type == Core::HID::NpadStyleIndex::None) {
- controller.styleset_changed_event->Signal();
+ npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
return;
}
@@ -291,45 +356,11 @@ void NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
Common::Input::PollingMode::Active);
}
- SignalStyleSetChangedEvent(npad_id);
+ npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
WriteEmptyEntry(controller.shared_memory);
hid_core.SetLastActiveController(npad_id);
}
-void NPad::OnInit() {
- if (!IsControllerActivated()) {
- return;
- }
-
- for (std::size_t i = 0; i < controller_data.size(); ++i) {
- auto& controller = controller_data[i];
- controller.styleset_changed_event =
- service_context.CreateEvent(fmt::format("npad:NpadStyleSetChanged_{}", i));
- }
-
- supported_npad_id_types.resize(npad_id_list.size());
- std::memcpy(supported_npad_id_types.data(), npad_id_list.data(),
- npad_id_list.size() * sizeof(Core::HID::NpadIdType));
-
- // Prefill controller buffers
- for (auto& controller : controller_data) {
- auto* npad = controller.shared_memory;
- npad->fullkey_color = {
- .attribute = ColorAttribute::NoController,
- .fullkey = {},
- };
- npad->joycon_color = {
- .attribute = ColorAttribute::NoController,
- .left = {},
- .right = {},
- };
- // HW seems to initialize the first 19 entries
- for (std::size_t i = 0; i < 19; ++i) {
- WriteEmptyEntry(npad);
- }
- }
-}
-
void NPad::WriteEmptyEntry(NpadInternalState* npad) {
NPadGenericState dummy_pad_state{};
NpadGcTriggerState dummy_gc_state{};
@@ -351,31 +382,20 @@ void NPad::WriteEmptyEntry(NpadInternalState* npad) {
npad->gc_trigger_lifo.WriteNextEntry(dummy_gc_state);
}
-void NPad::OnRelease() {
- is_controller_initialized = false;
- for (std::size_t i = 0; i < controller_data.size(); ++i) {
- auto& controller = controller_data[i];
- service_context.CloseEvent(controller.styleset_changed_event);
- for (std::size_t device_idx = 0; device_idx < controller.vibration.size(); ++device_idx) {
- VibrateControllerAtIndex(controller.device->GetNpadIdType(), device_idx, {});
- }
- }
-}
-
-void NPad::RequestPadStateUpdate(Core::HID::NpadIdType npad_id) {
- std::scoped_lock lock{mutex};
- auto& controller = GetControllerFromNpadIdType(npad_id);
+void NPad::RequestPadStateUpdate(u64 aruid, Core::HID::NpadIdType npad_id) {
+ std::scoped_lock lock{*applet_resource_holder.shared_mutex};
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
const auto controller_type = controller.device->GetNpadStyleIndex();
if (!controller.device->IsConnected() && controller.is_connected) {
- DisconnectNpad(npad_id);
+ DisconnectNpad(aruid, npad_id);
return;
}
if (!controller.device->IsConnected()) {
return;
}
if (controller.device->IsConnected() && !controller.is_connected) {
- InitNewlyAddedController(npad_id);
+ InitNewlyAddedController(aruid, npad_id);
}
// This function is unique to yuzu for the turbo buttons and motion to work properly
@@ -432,222 +452,232 @@ void NPad::RequestPadStateUpdate(Core::HID::NpadIdType npad_id) {
}
void NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
- if (!IsControllerActivated()) {
+ if (ref_counter == 0) {
return;
}
- for (std::size_t i = 0; i < controller_data.size(); ++i) {
- auto& controller = controller_data[i];
- auto* npad = controller.shared_memory;
-
- const auto& controller_type = controller.device->GetNpadStyleIndex();
+ std::scoped_lock lock{*applet_resource_holder.shared_mutex};
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; ++aruid_index) {
+ const auto* data = applet_resource_holder.applet_resource->GetAruidDataByIndex(aruid_index);
+ const auto aruid = data->aruid;
- if (controller_type == Core::HID::NpadStyleIndex::None ||
- !controller.device->IsConnected()) {
+ if (!data->flag.is_assigned) {
continue;
}
- RequestPadStateUpdate(controller.device->GetNpadIdType());
- auto& pad_state = controller.npad_pad_state;
- auto& libnx_state = controller.npad_libnx_state;
- auto& trigger_state = controller.npad_trigger_state;
-
- // LibNX exclusively uses this section, so we always update it since LibNX doesn't activate
- // any controllers.
- libnx_state.connection_status.raw = 0;
- libnx_state.connection_status.is_connected.Assign(1);
- switch (controller_type) {
- case Core::HID::NpadStyleIndex::None:
- ASSERT(false);
- break;
- case Core::HID::NpadStyleIndex::ProController:
- case Core::HID::NpadStyleIndex::NES:
- case Core::HID::NpadStyleIndex::SNES:
- case Core::HID::NpadStyleIndex::N64:
- case Core::HID::NpadStyleIndex::SegaGenesis:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.connection_status.is_wired.Assign(1);
-
- libnx_state.connection_status.is_wired.Assign(1);
- pad_state.sampling_number =
- npad->fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->fullkey_lifo.WriteNextEntry(pad_state);
- break;
- case Core::HID::NpadStyleIndex::Handheld:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.connection_status.is_wired.Assign(1);
- pad_state.connection_status.is_left_connected.Assign(1);
- pad_state.connection_status.is_right_connected.Assign(1);
- pad_state.connection_status.is_left_wired.Assign(1);
- pad_state.connection_status.is_right_wired.Assign(1);
-
- libnx_state.connection_status.is_wired.Assign(1);
- libnx_state.connection_status.is_left_connected.Assign(1);
- libnx_state.connection_status.is_right_connected.Assign(1);
- libnx_state.connection_status.is_left_wired.Assign(1);
- libnx_state.connection_status.is_right_wired.Assign(1);
- pad_state.sampling_number =
- npad->handheld_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->handheld_lifo.WriteNextEntry(pad_state);
- break;
- case Core::HID::NpadStyleIndex::JoyconDual:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- if (controller.is_dual_left_connected) {
+ for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
+ auto& controller = controller_data[aruid_index][i];
+ controller.shared_memory =
+ &data->shared_memory_format->npad.npad_entry[i].internal_state;
+ auto* npad = controller.shared_memory;
+
+ const auto& controller_type = controller.device->GetNpadStyleIndex();
+
+ if (controller_type == Core::HID::NpadStyleIndex::None ||
+ !controller.device->IsConnected()) {
+ continue;
+ }
+
+ RequestPadStateUpdate(aruid, controller.device->GetNpadIdType());
+ auto& pad_state = controller.npad_pad_state;
+ auto& libnx_state = controller.npad_libnx_state;
+ auto& trigger_state = controller.npad_trigger_state;
+
+ // LibNX exclusively uses this section, so we always update it since LibNX doesn't
+ // activate any controllers.
+ libnx_state.connection_status.raw = 0;
+ libnx_state.connection_status.is_connected.Assign(1);
+ switch (controller_type) {
+ case Core::HID::NpadStyleIndex::None:
+ ASSERT(false);
+ break;
+ case Core::HID::NpadStyleIndex::ProController:
+ case Core::HID::NpadStyleIndex::NES:
+ case Core::HID::NpadStyleIndex::SNES:
+ case Core::HID::NpadStyleIndex::N64:
+ case Core::HID::NpadStyleIndex::SegaGenesis:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ pad_state.connection_status.is_wired.Assign(1);
+
+ libnx_state.connection_status.is_wired.Assign(1);
+ pad_state.sampling_number =
+ npad->fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->fullkey_lifo.WriteNextEntry(pad_state);
+ break;
+ case Core::HID::NpadStyleIndex::Handheld:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ pad_state.connection_status.is_wired.Assign(1);
pad_state.connection_status.is_left_connected.Assign(1);
+ pad_state.connection_status.is_right_connected.Assign(1);
+ pad_state.connection_status.is_left_wired.Assign(1);
+ pad_state.connection_status.is_right_wired.Assign(1);
+
+ libnx_state.connection_status.is_wired.Assign(1);
libnx_state.connection_status.is_left_connected.Assign(1);
- }
- if (controller.is_dual_right_connected) {
+ libnx_state.connection_status.is_right_connected.Assign(1);
+ libnx_state.connection_status.is_left_wired.Assign(1);
+ libnx_state.connection_status.is_right_wired.Assign(1);
+ pad_state.sampling_number =
+ npad->handheld_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->handheld_lifo.WriteNextEntry(pad_state);
+ break;
+ case Core::HID::NpadStyleIndex::JoyconDual:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ if (controller.is_dual_left_connected) {
+ pad_state.connection_status.is_left_connected.Assign(1);
+ libnx_state.connection_status.is_left_connected.Assign(1);
+ }
+ if (controller.is_dual_right_connected) {
+ pad_state.connection_status.is_right_connected.Assign(1);
+ libnx_state.connection_status.is_right_connected.Assign(1);
+ }
+
+ pad_state.sampling_number =
+ npad->joy_dual_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->joy_dual_lifo.WriteNextEntry(pad_state);
+ break;
+ case Core::HID::NpadStyleIndex::JoyconLeft:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ pad_state.connection_status.is_left_connected.Assign(1);
+
+ libnx_state.connection_status.is_left_connected.Assign(1);
+ pad_state.sampling_number =
+ npad->joy_left_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->joy_left_lifo.WriteNextEntry(pad_state);
+ break;
+ case Core::HID::NpadStyleIndex::JoyconRight:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
pad_state.connection_status.is_right_connected.Assign(1);
+
libnx_state.connection_status.is_right_connected.Assign(1);
+ pad_state.sampling_number =
+ npad->joy_right_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->joy_right_lifo.WriteNextEntry(pad_state);
+ break;
+ case Core::HID::NpadStyleIndex::GameCube:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ pad_state.connection_status.is_wired.Assign(1);
+
+ libnx_state.connection_status.is_wired.Assign(1);
+ pad_state.sampling_number =
+ npad->fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ trigger_state.sampling_number =
+ npad->gc_trigger_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->fullkey_lifo.WriteNextEntry(pad_state);
+ npad->gc_trigger_lifo.WriteNextEntry(trigger_state);
+ break;
+ case Core::HID::NpadStyleIndex::Pokeball:
+ pad_state.connection_status.raw = 0;
+ pad_state.connection_status.is_connected.Assign(1);
+ pad_state.sampling_number =
+ npad->palma_lifo.ReadCurrentEntry().state.sampling_number + 1;
+ npad->palma_lifo.WriteNextEntry(pad_state);
+ break;
+ default:
+ break;
}
- pad_state.sampling_number =
- npad->joy_dual_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->joy_dual_lifo.WriteNextEntry(pad_state);
- break;
- case Core::HID::NpadStyleIndex::JoyconLeft:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.connection_status.is_left_connected.Assign(1);
-
- libnx_state.connection_status.is_left_connected.Assign(1);
- pad_state.sampling_number =
- npad->joy_left_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->joy_left_lifo.WriteNextEntry(pad_state);
- break;
- case Core::HID::NpadStyleIndex::JoyconRight:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.connection_status.is_right_connected.Assign(1);
-
- libnx_state.connection_status.is_right_connected.Assign(1);
- pad_state.sampling_number =
- npad->joy_right_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->joy_right_lifo.WriteNextEntry(pad_state);
- break;
- case Core::HID::NpadStyleIndex::GameCube:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.connection_status.is_wired.Assign(1);
-
- libnx_state.connection_status.is_wired.Assign(1);
- pad_state.sampling_number =
- npad->fullkey_lifo.ReadCurrentEntry().state.sampling_number + 1;
- trigger_state.sampling_number =
- npad->gc_trigger_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->fullkey_lifo.WriteNextEntry(pad_state);
- npad->gc_trigger_lifo.WriteNextEntry(trigger_state);
- break;
- case Core::HID::NpadStyleIndex::Pokeball:
- pad_state.connection_status.raw = 0;
- pad_state.connection_status.is_connected.Assign(1);
- pad_state.sampling_number =
- npad->palma_lifo.ReadCurrentEntry().state.sampling_number + 1;
- npad->palma_lifo.WriteNextEntry(pad_state);
- break;
- default:
- break;
- }
+ libnx_state.npad_buttons.raw = pad_state.npad_buttons.raw;
+ libnx_state.l_stick = pad_state.l_stick;
+ libnx_state.r_stick = pad_state.r_stick;
+ npad->system_ext_lifo.WriteNextEntry(pad_state);
- libnx_state.npad_buttons.raw = pad_state.npad_buttons.raw;
- libnx_state.l_stick = pad_state.l_stick;
- libnx_state.r_stick = pad_state.r_stick;
- npad->system_ext_lifo.WriteNextEntry(pad_state);
-
- press_state |= static_cast<u64>(pad_state.npad_buttons.raw);
+ press_state |= static_cast<u64>(pad_state.npad_buttons.raw);
+ }
}
}
-void NPad::SetSupportedStyleSet(Core::HID::NpadStyleTag style_set) {
- hid_core.SetSupportedStyleTag(style_set);
-
- if (is_controller_initialized) {
- return;
+Result NPad::SetSupportedNpadStyleSet(u64 aruid, Core::HID::NpadStyleSet supported_style_set) {
+ std::scoped_lock lock{mutex};
+ hid_core.SetSupportedStyleTag({supported_style_set});
+ const Result result = npad_resource.SetSupportedNpadStyleSet(aruid, supported_style_set);
+ if (result.IsSuccess()) {
+ OnUpdate({});
}
-
- // Once SetSupportedStyleSet is called controllers are fully initialized
- is_controller_initialized = true;
+ return result;
}
-Core::HID::NpadStyleTag NPad::GetSupportedStyleSet() const {
- if (!is_controller_initialized) {
- return {Core::HID::NpadStyleSet::None};
+Result NPad::GetSupportedNpadStyleSet(u64 aruid,
+ Core::HID::NpadStyleSet& out_supported_style_set) const {
+ std::scoped_lock lock{mutex};
+ const Result result = npad_resource.GetSupportedNpadStyleSet(out_supported_style_set, aruid);
+
+ if (result == ResultUndefinedStyleset) {
+ out_supported_style_set = Core::HID::NpadStyleSet::None;
+ return ResultSuccess;
}
- return hid_core.GetSupportedStyleTag();
+
+ return result;
}
-Result NPad::SetSupportedNpadIdTypes(std::span<const u8> data) {
- constexpr std::size_t max_number_npad_ids = 0xa;
- const auto length = data.size();
- ASSERT(length > 0 && (length % sizeof(u32)) == 0);
- const std::size_t elements = length / sizeof(u32);
+Result NPad::GetMaskedSupportedNpadStyleSet(
+ u64 aruid, Core::HID::NpadStyleSet& out_supported_style_set) const {
+ std::scoped_lock lock{mutex};
+ const Result result =
+ npad_resource.GetMaskedSupportedNpadStyleSet(out_supported_style_set, aruid);
- if (elements > max_number_npad_ids) {
- return InvalidArraySize;
+ if (result == ResultUndefinedStyleset) {
+ out_supported_style_set = Core::HID::NpadStyleSet::None;
+ return ResultSuccess;
}
- supported_npad_id_types.clear();
- supported_npad_id_types.resize(elements);
- std::memcpy(supported_npad_id_types.data(), data.data(), length);
- return ResultSuccess;
+ return result;
}
-void NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length) {
- const auto copy_amount = supported_npad_id_types.size() * sizeof(u32);
- ASSERT(max_length <= copy_amount);
- std::memcpy(data, supported_npad_id_types.data(), copy_amount);
-}
+Result NPad::SetSupportedNpadIdType(u64 aruid,
+ std::span<const Core::HID::NpadIdType> supported_npad_list) {
+ std::scoped_lock lock{mutex};
+ if (supported_npad_list.size() > MaxSupportedNpadIdTypes) {
+ return ResultInvalidArraySize;
+ }
-std::size_t NPad::GetSupportedNpadIdTypesSize() const {
- return supported_npad_id_types.size();
-}
+ Result result = npad_resource.SetSupportedNpadIdType(aruid, supported_npad_list);
-void NPad::SetHoldType(NpadJoyHoldType joy_hold_type) {
- if (joy_hold_type != NpadJoyHoldType::Horizontal &&
- joy_hold_type != NpadJoyHoldType::Vertical) {
- LOG_ERROR(Service_HID, "Npad joy hold type needs to be valid, joy_hold_type={}",
- joy_hold_type);
- return;
+ if (result.IsSuccess()) {
+ OnUpdate({});
}
- hold_type = joy_hold_type;
-}
-NpadJoyHoldType NPad::GetHoldType() const {
- return hold_type;
+ return result;
}
-void NPad::SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode) {
- if (activation_mode >= NpadHandheldActivationMode::MaxActivationMode) {
- ASSERT_MSG(false, "Activation mode should be always None, Single or Dual");
- return;
- }
-
- handheld_activation_mode = activation_mode;
+Result NPad::SetNpadJoyHoldType(u64 aruid, NpadJoyHoldType hold_type) {
+ std::scoped_lock lock{mutex};
+ return npad_resource.SetNpadJoyHoldType(aruid, hold_type);
}
-NpadHandheldActivationMode NPad::GetNpadHandheldActivationMode() const {
- return handheld_activation_mode;
+Result NPad::GetNpadJoyHoldType(u64 aruid, NpadJoyHoldType& out_hold_type) const {
+ std::scoped_lock lock{mutex};
+ return npad_resource.GetNpadJoyHoldType(out_hold_type, aruid);
}
-void NPad::SetNpadCommunicationMode(NpadCommunicationMode communication_mode_) {
- communication_mode = communication_mode_;
+Result NPad::SetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode mode) {
+ std::scoped_lock lock{mutex};
+ Result result = npad_resource.SetNpadHandheldActivationMode(aruid, mode);
+ if (result.IsSuccess()) {
+ OnUpdate({});
+ }
+ return result;
}
-NpadCommunicationMode NPad::GetNpadCommunicationMode() const {
- return communication_mode;
+Result NPad::GetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode& out_mode) const {
+ std::scoped_lock lock{mutex};
+ return npad_resource.GetNpadHandheldActivationMode(out_mode, aruid);
}
-bool NPad::SetNpadMode(Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType npad_id,
+bool NPad::SetNpadMode(u64 aruid, Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType npad_id,
NpadJoyDeviceType npad_device_type, NpadJoyAssignmentMode assignment_mode) {
if (!IsNpadIdValid(npad_id)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
return false;
}
- auto& controller = GetControllerFromNpadIdType(npad_id);
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
if (controller.shared_memory->assignment_mode != assignment_mode) {
controller.shared_memory->assignment_mode = assignment_mode;
}
@@ -658,17 +688,17 @@ bool NPad::SetNpadMode(Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType
if (assignment_mode == NpadJoyAssignmentMode::Dual) {
if (controller.device->GetNpadStyleIndex() == Core::HID::NpadStyleIndex::JoyconLeft) {
- DisconnectNpad(npad_id);
+ DisconnectNpad(aruid, npad_id);
controller.is_dual_left_connected = true;
controller.is_dual_right_connected = false;
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconDual, npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconDual, npad_id, true);
return false;
}
if (controller.device->GetNpadStyleIndex() == Core::HID::NpadStyleIndex::JoyconRight) {
- DisconnectNpad(npad_id);
+ DisconnectNpad(aruid, npad_id);
controller.is_dual_left_connected = false;
controller.is_dual_right_connected = true;
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconDual, npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconDual, npad_id, true);
return false;
}
return false;
@@ -682,37 +712,38 @@ bool NPad::SetNpadMode(Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType
}
if (controller.is_dual_left_connected && !controller.is_dual_right_connected) {
- DisconnectNpad(npad_id);
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconLeft, npad_id, true);
+ DisconnectNpad(aruid, npad_id);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconLeft, npad_id, true);
return false;
}
if (!controller.is_dual_left_connected && controller.is_dual_right_connected) {
- DisconnectNpad(npad_id);
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconRight, npad_id, true);
+ DisconnectNpad(aruid, npad_id);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconRight, npad_id, true);
return false;
}
// We have two controllers connected to the same npad_id we need to split them
new_npad_id = hid_core.GetFirstDisconnectedNpadId();
- auto& controller_2 = GetControllerFromNpadIdType(new_npad_id);
- DisconnectNpad(npad_id);
+ auto& controller_2 = GetControllerFromNpadIdType(aruid, new_npad_id);
+ DisconnectNpad(aruid, npad_id);
if (npad_device_type == NpadJoyDeviceType::Left) {
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconLeft, npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconLeft, npad_id, true);
controller_2.is_dual_left_connected = false;
controller_2.is_dual_right_connected = true;
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconDual, new_npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconDual, new_npad_id, true);
} else {
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconRight, npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconRight, npad_id, true);
controller_2.is_dual_left_connected = true;
controller_2.is_dual_right_connected = false;
- UpdateControllerAt(Core::HID::NpadStyleIndex::JoyconDual, new_npad_id, true);
+ UpdateControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconDual, new_npad_id, true);
}
return true;
}
-bool NPad::VibrateControllerAtIndex(Core::HID::NpadIdType npad_id, std::size_t device_index,
+bool NPad::VibrateControllerAtIndex(u64 aruid, Core::HID::NpadIdType npad_id,
+ std::size_t device_index,
const Core::HID::VibrationValue& vibration_value) {
- auto& controller = GetControllerFromNpadIdType(npad_id);
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
if (!controller.device->IsConnected()) {
return false;
}
@@ -755,7 +786,8 @@ bool NPad::VibrateControllerAtIndex(Core::HID::NpadIdType npad_id, std::size_t d
return controller.device->SetVibration(device_index, vibration);
}
-void NPad::VibrateController(const Core::HID::VibrationDeviceHandle& vibration_device_handle,
+void NPad::VibrateController(u64 aruid,
+ const Core::HID::VibrationDeviceHandle& vibration_device_handle,
const Core::HID::VibrationValue& vibration_value) {
if (IsVibrationHandleValid(vibration_device_handle).IsError()) {
return;
@@ -765,7 +797,7 @@ void NPad::VibrateController(const Core::HID::VibrationDeviceHandle& vibration_d
return;
}
- auto& controller = GetControllerFromHandle(vibration_device_handle);
+ auto& controller = GetControllerFromHandle(aruid, vibration_device_handle);
const auto device_index = static_cast<std::size_t>(vibration_device_handle.device_index);
if (!controller.vibration[device_index].device_mounted || !controller.device->IsConnected()) {
@@ -795,14 +827,14 @@ void NPad::VibrateController(const Core::HID::VibrationDeviceHandle& vibration_d
return;
}
- if (VibrateControllerAtIndex(controller.device->GetNpadIdType(), device_index,
+ if (VibrateControllerAtIndex(aruid, controller.device->GetNpadIdType(), device_index,
vibration_value)) {
controller.vibration[device_index].latest_vibration_value = vibration_value;
}
}
void NPad::VibrateControllers(
- std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
+ u64 aruid, std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
std::span<const Core::HID::VibrationValue> vibration_values) {
if (!Settings::values.vibration_enabled.GetValue() && !permit_vibration_session_enabled) {
return;
@@ -814,17 +846,17 @@ void NPad::VibrateControllers(
"this is undefined behavior!");
for (std::size_t i = 0; i < vibration_device_handles.size(); ++i) {
- VibrateController(vibration_device_handles[i], vibration_values[i]);
+ VibrateController(aruid, vibration_device_handles[i], vibration_values[i]);
}
}
Core::HID::VibrationValue NPad::GetLastVibration(
- const Core::HID::VibrationDeviceHandle& vibration_device_handle) const {
+ u64 aruid, const Core::HID::VibrationDeviceHandle& vibration_device_handle) const {
if (IsVibrationHandleValid(vibration_device_handle).IsError()) {
return {};
}
- const auto& controller = GetControllerFromHandle(vibration_device_handle);
+ const auto& controller = GetControllerFromHandle(aruid, vibration_device_handle);
const auto device_index = static_cast<std::size_t>(vibration_device_handle.device_index);
return controller.vibration[device_index].latest_vibration_value;
}
@@ -835,14 +867,15 @@ void NPad::InitializeVibrationDevice(
return;
}
+ const auto aruid = applet_resource_holder.applet_resource->GetActiveAruid();
const auto npad_index = static_cast<Core::HID::NpadIdType>(vibration_device_handle.npad_id);
const auto device_index = static_cast<std::size_t>(vibration_device_handle.device_index);
- InitializeVibrationDeviceAtIndex(npad_index, device_index);
+ InitializeVibrationDeviceAtIndex(aruid, npad_index, device_index);
}
-void NPad::InitializeVibrationDeviceAtIndex(Core::HID::NpadIdType npad_id,
+void NPad::InitializeVibrationDeviceAtIndex(u64 aruid, Core::HID::NpadIdType npad_id,
std::size_t device_index) {
- auto& controller = GetControllerFromNpadIdType(npad_id);
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
if (!Settings::values.vibration_enabled.GetValue()) {
controller.vibration[device_index].device_mounted = false;
return;
@@ -857,60 +890,50 @@ void NPad::SetPermitVibrationSession(bool permit_vibration_session) {
}
bool NPad::IsVibrationDeviceMounted(
- const Core::HID::VibrationDeviceHandle& vibration_device_handle) const {
+ u64 aruid, const Core::HID::VibrationDeviceHandle& vibration_device_handle) const {
if (IsVibrationHandleValid(vibration_device_handle).IsError()) {
return false;
}
- const auto& controller = GetControllerFromHandle(vibration_device_handle);
+ const auto& controller = GetControllerFromHandle(aruid, vibration_device_handle);
const auto device_index = static_cast<std::size_t>(vibration_device_handle.device_index);
return controller.vibration[device_index].device_mounted;
}
-Kernel::KReadableEvent& NPad::GetStyleSetChangedEvent(Core::HID::NpadIdType npad_id) {
- if (!IsNpadIdValid(npad_id)) {
- LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
- // Fallback to player 1
- const auto& controller = GetControllerFromNpadIdType(Core::HID::NpadIdType::Player1);
- return controller.styleset_changed_event->GetReadableEvent();
- }
-
- const auto& controller = GetControllerFromNpadIdType(npad_id);
- return controller.styleset_changed_event->GetReadableEvent();
-}
-
-void NPad::SignalStyleSetChangedEvent(Core::HID::NpadIdType npad_id) const {
- const auto& controller = GetControllerFromNpadIdType(npad_id);
- controller.styleset_changed_event->Signal();
+Result NPad::AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
+ Core::HID::NpadIdType npad_id) {
+ std::scoped_lock lock{mutex};
+ return npad_resource.AcquireNpadStyleSetUpdateEventHandle(aruid, out_event, npad_id);
}
-void NPad::AddNewControllerAt(Core::HID::NpadStyleIndex controller, Core::HID::NpadIdType npad_id) {
- UpdateControllerAt(controller, npad_id, true);
+void NPad::AddNewControllerAt(u64 aruid, Core::HID::NpadStyleIndex controller,
+ Core::HID::NpadIdType npad_id) {
+ UpdateControllerAt(aruid, controller, npad_id, true);
}
-void NPad::UpdateControllerAt(Core::HID::NpadStyleIndex type, Core::HID::NpadIdType npad_id,
- bool connected) {
- auto& controller = GetControllerFromNpadIdType(npad_id);
+void NPad::UpdateControllerAt(u64 aruid, Core::HID::NpadStyleIndex type,
+ Core::HID::NpadIdType npad_id, bool connected) {
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
if (!connected) {
- DisconnectNpad(npad_id);
+ DisconnectNpad(aruid, npad_id);
return;
}
controller.device->SetNpadStyleIndex(type);
- InitNewlyAddedController(npad_id);
+ InitNewlyAddedController(aruid, npad_id);
}
-Result NPad::DisconnectNpad(Core::HID::NpadIdType npad_id) {
+Result NPad::DisconnectNpad(u64 aruid, Core::HID::NpadIdType npad_id) {
if (!IsNpadIdValid(npad_id)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
- return InvalidNpadId;
+ return ResultInvalidNpadId;
}
LOG_DEBUG(Service_HID, "Npad disconnected {}", npad_id);
- auto& controller = GetControllerFromNpadIdType(npad_id);
+ auto& controller = GetControllerFromNpadIdType(aruid, npad_id);
for (std::size_t device_idx = 0; device_idx < controller.vibration.size(); ++device_idx) {
// Send an empty vibration to stop any vibrations.
- VibrateControllerAtIndex(npad_id, device_idx, {});
+ VibrateControllerAtIndex(aruid, npad_id, device_idx, {});
controller.vibration[device_idx].device_mounted = false;
}
@@ -944,71 +967,48 @@ Result NPad::DisconnectNpad(Core::HID::NpadIdType npad_id) {
controller.is_dual_right_connected = true;
controller.is_connected = false;
controller.device->Disconnect();
- SignalStyleSetChangedEvent(npad_id);
+ npad_resource.SignalStyleSetUpdateEvent(aruid, npad_id);
WriteEmptyEntry(shared_memory);
return ResultSuccess;
}
Result NPad::IsFirmwareUpdateAvailableForSixAxisSensor(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle, bool& is_firmware_available) const {
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle,
+ bool& is_firmware_available) const {
const auto is_valid = IsSixaxisHandleValid(sixaxis_handle);
if (is_valid.IsError()) {
LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw);
return is_valid;
}
- const auto& sixaxis_properties = GetSixaxisProperties(sixaxis_handle);
+ const auto& sixaxis_properties = GetSixaxisProperties(aruid, sixaxis_handle);
is_firmware_available = sixaxis_properties.is_firmware_update_available != 0;
return ResultSuccess;
}
Result NPad::ResetIsSixAxisSensorDeviceNewlyAssigned(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle) {
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle) {
const auto is_valid = IsSixaxisHandleValid(sixaxis_handle);
if (is_valid.IsError()) {
LOG_ERROR(Service_HID, "Invalid handle, error_code={}", is_valid.raw);
return is_valid;
}
- auto& sixaxis_properties = GetSixaxisProperties(sixaxis_handle);
+ auto& sixaxis_properties = GetSixaxisProperties(aruid, sixaxis_handle);
sixaxis_properties.is_newly_assigned.Assign(0);
return ResultSuccess;
}
-NpadSixAxisSensorLifo& NPad::GetSixAxisFullkeyLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_fullkey_lifo;
-}
-
-NpadSixAxisSensorLifo& NPad::GetSixAxisHandheldLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_handheld_lifo;
-}
-
-NpadSixAxisSensorLifo& NPad::GetSixAxisDualLeftLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_dual_left_lifo;
-}
-
-NpadSixAxisSensorLifo& NPad::GetSixAxisDualRightLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_dual_right_lifo;
-}
-
-NpadSixAxisSensorLifo& NPad::GetSixAxisLeftLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_left_lifo;
-}
-
-NpadSixAxisSensorLifo& NPad::GetSixAxisRightLifo(Core::HID::NpadIdType npad_id) {
- return GetControllerFromNpadIdType(npad_id).shared_memory->sixaxis_right_lifo;
-}
-
-Result NPad::MergeSingleJoyAsDualJoy(Core::HID::NpadIdType npad_id_1,
+Result NPad::MergeSingleJoyAsDualJoy(u64 aruid, Core::HID::NpadIdType npad_id_1,
Core::HID::NpadIdType npad_id_2) {
if (!IsNpadIdValid(npad_id_1) || !IsNpadIdValid(npad_id_2)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id_1:{}, npad_id_2:{}", npad_id_1,
npad_id_2);
- return InvalidNpadId;
+ return ResultInvalidNpadId;
}
- auto& controller_1 = GetControllerFromNpadIdType(npad_id_1);
- auto& controller_2 = GetControllerFromNpadIdType(npad_id_2);
+ auto& controller_1 = GetControllerFromNpadIdType(aruid, npad_id_1);
+ auto& controller_2 = GetControllerFromNpadIdType(aruid, npad_id_2);
auto controller_style_1 = controller_1.device->GetNpadStyleIndex();
auto controller_style_2 = controller_2.device->GetNpadStyleIndex();
@@ -1055,51 +1055,62 @@ Result NPad::MergeSingleJoyAsDualJoy(Core::HID::NpadIdType npad_id_1,
}
// Disconnect the joycons and connect them as dual joycon at the first index.
- DisconnectNpad(npad_id_1);
- DisconnectNpad(npad_id_2);
+ DisconnectNpad(aruid, npad_id_1);
+ DisconnectNpad(aruid, npad_id_2);
controller_1.is_dual_left_connected = true;
controller_1.is_dual_right_connected = true;
- AddNewControllerAt(Core::HID::NpadStyleIndex::JoyconDual, npad_id_1);
+ AddNewControllerAt(aruid, Core::HID::NpadStyleIndex::JoyconDual, npad_id_1);
return ResultSuccess;
}
-void NPad::StartLRAssignmentMode() {
- // Nothing internally is used for lr assignment mode. Since we have the ability to set the
- // controller types from boot, it doesn't really matter about showing a selection screen
- is_in_lr_assignment_mode = true;
+Result NPad::StartLrAssignmentMode(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ bool is_enabled{};
+ Result result = npad_resource.GetLrAssignmentMode(is_enabled, aruid);
+ if (result.IsSuccess() && is_enabled == false) {
+ result = npad_resource.SetLrAssignmentMode(aruid, true);
+ }
+ return result;
}
-void NPad::StopLRAssignmentMode() {
- is_in_lr_assignment_mode = false;
+Result NPad::StopLrAssignmentMode(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ bool is_enabled{};
+ Result result = npad_resource.GetLrAssignmentMode(is_enabled, aruid);
+ if (result.IsSuccess() && is_enabled == true) {
+ result = npad_resource.SetLrAssignmentMode(aruid, false);
+ }
+ return result;
}
-Result NPad::SwapNpadAssignment(Core::HID::NpadIdType npad_id_1, Core::HID::NpadIdType npad_id_2) {
+Result NPad::SwapNpadAssignment(u64 aruid, Core::HID::NpadIdType npad_id_1,
+ Core::HID::NpadIdType npad_id_2) {
if (!IsNpadIdValid(npad_id_1) || !IsNpadIdValid(npad_id_2)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id_1:{}, npad_id_2:{}", npad_id_1,
npad_id_2);
- return InvalidNpadId;
+ return ResultInvalidNpadId;
}
if (npad_id_1 == Core::HID::NpadIdType::Handheld ||
npad_id_2 == Core::HID::NpadIdType::Handheld || npad_id_1 == Core::HID::NpadIdType::Other ||
npad_id_2 == Core::HID::NpadIdType::Other) {
return ResultSuccess;
}
- const auto& controller_1 = GetControllerFromNpadIdType(npad_id_1).device;
- const auto& controller_2 = GetControllerFromNpadIdType(npad_id_2).device;
+ const auto& controller_1 = GetControllerFromNpadIdType(aruid, npad_id_1).device;
+ const auto& controller_2 = GetControllerFromNpadIdType(aruid, npad_id_2).device;
const auto type_index_1 = controller_1->GetNpadStyleIndex();
const auto type_index_2 = controller_2->GetNpadStyleIndex();
const auto is_connected_1 = controller_1->IsConnected();
const auto is_connected_2 = controller_2->IsConnected();
- if (!IsControllerSupported(type_index_1) && is_connected_1) {
- return NpadNotConnected;
+ if (!npad_resource.IsControllerSupported(aruid, type_index_1) && is_connected_1) {
+ return ResultNpadNotConnected;
}
- if (!IsControllerSupported(type_index_2) && is_connected_2) {
- return NpadNotConnected;
+ if (!npad_resource.IsControllerSupported(aruid, type_index_2) && is_connected_2) {
+ return ResultNpadNotConnected;
}
- UpdateControllerAt(type_index_2, npad_id_1, is_connected_2);
- UpdateControllerAt(type_index_1, npad_id_2, is_connected_1);
+ UpdateControllerAt(aruid, type_index_2, npad_id_1, is_connected_2);
+ UpdateControllerAt(aruid, type_index_1, npad_id_2, is_connected_1);
return ResultSuccess;
}
@@ -1107,68 +1118,68 @@ Result NPad::SwapNpadAssignment(Core::HID::NpadIdType npad_id_1, Core::HID::Npad
Result NPad::GetLedPattern(Core::HID::NpadIdType npad_id, Core::HID::LedPattern& pattern) const {
if (!IsNpadIdValid(npad_id)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
- return InvalidNpadId;
+ return ResultInvalidNpadId;
}
- const auto& controller = GetControllerFromNpadIdType(npad_id).device;
+ const auto aruid = applet_resource_holder.applet_resource->GetActiveAruid();
+ const auto& controller = GetControllerFromNpadIdType(aruid, npad_id).device;
pattern = controller->GetLedPattern();
return ResultSuccess;
}
-Result NPad::IsUnintendedHomeButtonInputProtectionEnabled(Core::HID::NpadIdType npad_id,
- bool& is_valid) const {
- if (!IsNpadIdValid(npad_id)) {
- LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
- return InvalidNpadId;
- }
- const auto& controller = GetControllerFromNpadIdType(npad_id);
- is_valid = controller.unintended_home_button_input_protection;
- return ResultSuccess;
+Result NPad::IsUnintendedHomeButtonInputProtectionEnabled(bool& out_is_enabled, u64 aruid,
+ Core::HID::NpadIdType npad_id) const {
+ std::scoped_lock lock{mutex};
+ return npad_resource.GetHomeProtectionEnabled(out_is_enabled, aruid, npad_id);
}
-Result NPad::SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled,
- Core::HID::NpadIdType npad_id) {
- if (!IsNpadIdValid(npad_id)) {
- LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
- return InvalidNpadId;
- }
- auto& controller = GetControllerFromNpadIdType(npad_id);
- controller.unintended_home_button_input_protection = is_protection_enabled;
- return ResultSuccess;
+Result NPad::EnableUnintendedHomeButtonInputProtection(u64 aruid, Core::HID::NpadIdType npad_id,
+ bool is_enabled) {
+ std::scoped_lock lock{mutex};
+ return npad_resource.SetHomeProtectionEnabled(aruid, npad_id, is_enabled);
}
-void NPad::SetAnalogStickUseCenterClamp(bool use_center_clamp) {
- analog_stick_use_center_clamp = use_center_clamp;
+void NPad::SetNpadAnalogStickUseCenterClamp(u64 aruid, bool is_enabled) {
+ std::scoped_lock lock{mutex};
+ npad_resource.SetNpadAnalogStickUseCenterClamp(aruid, is_enabled);
}
void NPad::ClearAllConnectedControllers() {
- for (auto& controller : controller_data) {
- if (controller.device->IsConnected() &&
- controller.device->GetNpadStyleIndex() != Core::HID::NpadStyleIndex::None) {
- controller.device->Disconnect();
- controller.device->SetNpadStyleIndex(Core::HID::NpadStyleIndex::None);
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; aruid_index++) {
+ for (auto& controller : controller_data[aruid_index]) {
+ if (controller.device->IsConnected() &&
+ controller.device->GetNpadStyleIndex() != Core::HID::NpadStyleIndex::None) {
+ controller.device->Disconnect();
+ controller.device->SetNpadStyleIndex(Core::HID::NpadStyleIndex::None);
+ }
}
}
}
void NPad::DisconnectAllConnectedControllers() {
- for (auto& controller : controller_data) {
- controller.device->Disconnect();
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; aruid_index++) {
+ for (auto& controller : controller_data[aruid_index]) {
+ controller.device->Disconnect();
+ }
}
}
void NPad::ConnectAllDisconnectedControllers() {
- for (auto& controller : controller_data) {
- if (controller.device->GetNpadStyleIndex() != Core::HID::NpadStyleIndex::None &&
- !controller.device->IsConnected()) {
- controller.device->Connect();
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; aruid_index++) {
+ for (auto& controller : controller_data[aruid_index]) {
+ if (controller.device->GetNpadStyleIndex() != Core::HID::NpadStyleIndex::None &&
+ !controller.device->IsConnected()) {
+ controller.device->Connect();
+ }
}
}
}
void NPad::ClearAllControllers() {
- for (auto& controller : controller_data) {
- controller.device->Disconnect();
- controller.device->SetNpadStyleIndex(Core::HID::NpadStyleIndex::None);
+ for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; aruid_index++) {
+ for (auto& controller : controller_data[aruid_index]) {
+ controller.device->Disconnect();
+ controller.device->SetNpadStyleIndex(Core::HID::NpadStyleIndex::None);
+ }
}
}
@@ -1176,128 +1187,105 @@ Core::HID::NpadButton NPad::GetAndResetPressState() {
return static_cast<Core::HID::NpadButton>(press_state.exchange(0));
}
-void NPad::ApplyNpadSystemCommonPolicy() {
- Core::HID::NpadStyleTag styletag{};
- styletag.fullkey.Assign(1);
- styletag.handheld.Assign(1);
- styletag.joycon_dual.Assign(1);
- styletag.system_ext.Assign(1);
- styletag.system.Assign(1);
- SetSupportedStyleSet(styletag);
-
- SetNpadHandheldActivationMode(NpadHandheldActivationMode::Dual);
-
- supported_npad_id_types.clear();
- supported_npad_id_types.resize(10);
- supported_npad_id_types[0] = Core::HID::NpadIdType::Player1;
- supported_npad_id_types[1] = Core::HID::NpadIdType::Player2;
- supported_npad_id_types[2] = Core::HID::NpadIdType::Player3;
- supported_npad_id_types[3] = Core::HID::NpadIdType::Player4;
- supported_npad_id_types[4] = Core::HID::NpadIdType::Player5;
- supported_npad_id_types[5] = Core::HID::NpadIdType::Player6;
- supported_npad_id_types[6] = Core::HID::NpadIdType::Player7;
- supported_npad_id_types[7] = Core::HID::NpadIdType::Player8;
- supported_npad_id_types[8] = Core::HID::NpadIdType::Other;
- supported_npad_id_types[9] = Core::HID::NpadIdType::Handheld;
-}
-
-bool NPad::IsControllerSupported(Core::HID::NpadStyleIndex controller) const {
- if (controller == Core::HID::NpadStyleIndex::Handheld) {
- const bool support_handheld =
- std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(),
- Core::HID::NpadIdType::Handheld) != supported_npad_id_types.end();
- // Handheld is not even a supported type, lets stop here
- if (!support_handheld) {
- return false;
- }
- // Handheld shouldn't be supported in docked mode
- if (Settings::IsDockedMode()) {
- return false;
- }
+Result NPad::ApplyNpadSystemCommonPolicy(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ const Result result = npad_resource.ApplyNpadSystemCommonPolicy(aruid, false);
+ if (result.IsSuccess()) {
+ OnUpdate({});
+ }
+ return result;
+}
- return true;
- }
-
- if (std::any_of(supported_npad_id_types.begin(), supported_npad_id_types.end(),
- [](Core::HID::NpadIdType npad_id) {
- return npad_id <= Core::HID::NpadIdType::Player8;
- })) {
- Core::HID::NpadStyleTag style = GetSupportedStyleSet();
- switch (controller) {
- case Core::HID::NpadStyleIndex::ProController:
- return style.fullkey.As<bool>();
- case Core::HID::NpadStyleIndex::JoyconDual:
- return style.joycon_dual.As<bool>();
- case Core::HID::NpadStyleIndex::JoyconLeft:
- return style.joycon_left.As<bool>();
- case Core::HID::NpadStyleIndex::JoyconRight:
- return style.joycon_right.As<bool>();
- case Core::HID::NpadStyleIndex::GameCube:
- return style.gamecube.As<bool>();
- case Core::HID::NpadStyleIndex::Pokeball:
- return style.palma.As<bool>();
- case Core::HID::NpadStyleIndex::NES:
- return style.lark.As<bool>();
- case Core::HID::NpadStyleIndex::SNES:
- return style.lucia.As<bool>();
- case Core::HID::NpadStyleIndex::N64:
- return style.lagoon.As<bool>();
- case Core::HID::NpadStyleIndex::SegaGenesis:
- return style.lager.As<bool>();
- default:
- return false;
- }
+Result NPad::ApplyNpadSystemCommonPolicyFull(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ const Result result = npad_resource.ApplyNpadSystemCommonPolicy(aruid, true);
+ if (result.IsSuccess()) {
+ OnUpdate({});
}
+ return result;
+}
+
+Result NPad::ClearNpadSystemCommonPolicy(u64 aruid) {
+ std::scoped_lock lock{mutex};
+ const Result result = npad_resource.ClearNpadSystemCommonPolicy(aruid);
+ if (result.IsSuccess()) {
+ OnUpdate({});
+ }
+ return result;
+}
+
+void NPad::SetRevision(u64 aruid, NpadRevision revision) {
+ npad_resource.SetNpadRevision(aruid, revision);
+}
+
+NpadRevision NPad::GetRevision(u64 aruid) {
+ return npad_resource.GetNpadRevision(aruid);
+}
+
+Result NPad::RegisterAppletResourceUserId(u64 aruid) {
+ return npad_resource.RegisterAppletResourceUserId(aruid);
+}
+
+void NPad::UnregisterAppletResourceUserId(u64 aruid) {
+ npad_resource.UnregisterAppletResourceUserId(aruid);
+}
- return false;
+void NPad::SetNpadExternals(std::shared_ptr<AppletResource> resource,
+ std::recursive_mutex* shared_mutex) {
+ applet_resource_holder.applet_resource = resource;
+ applet_resource_holder.shared_mutex = shared_mutex;
+ applet_resource_holder.shared_npad_resource = &npad_resource;
}
NPad::NpadControllerData& NPad::GetControllerFromHandle(
- const Core::HID::VibrationDeviceHandle& device_handle) {
+ u64 aruid, const Core::HID::VibrationDeviceHandle& device_handle) {
const auto npad_id = static_cast<Core::HID::NpadIdType>(device_handle.npad_id);
- return GetControllerFromNpadIdType(npad_id);
+ return GetControllerFromNpadIdType(aruid, npad_id);
}
const NPad::NpadControllerData& NPad::GetControllerFromHandle(
- const Core::HID::VibrationDeviceHandle& device_handle) const {
+ u64 aruid, const Core::HID::VibrationDeviceHandle& device_handle) const {
const auto npad_id = static_cast<Core::HID::NpadIdType>(device_handle.npad_id);
- return GetControllerFromNpadIdType(npad_id);
+ return GetControllerFromNpadIdType(aruid, npad_id);
}
NPad::NpadControllerData& NPad::GetControllerFromHandle(
- const Core::HID::SixAxisSensorHandle& device_handle) {
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle) {
const auto npad_id = static_cast<Core::HID::NpadIdType>(device_handle.npad_id);
- return GetControllerFromNpadIdType(npad_id);
+ return GetControllerFromNpadIdType(aruid, npad_id);
}
const NPad::NpadControllerData& NPad::GetControllerFromHandle(
- const Core::HID::SixAxisSensorHandle& device_handle) const {
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle) const {
const auto npad_id = static_cast<Core::HID::NpadIdType>(device_handle.npad_id);
- return GetControllerFromNpadIdType(npad_id);
+ return GetControllerFromNpadIdType(aruid, npad_id);
}
-NPad::NpadControllerData& NPad::GetControllerFromNpadIdType(Core::HID::NpadIdType npad_id) {
+NPad::NpadControllerData& NPad::GetControllerFromNpadIdType(u64 aruid,
+ Core::HID::NpadIdType npad_id) {
if (!IsNpadIdValid(npad_id)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
npad_id = Core::HID::NpadIdType::Player1;
}
const auto npad_index = NpadIdTypeToIndex(npad_id);
- return controller_data[npad_index];
+ const auto aruid_index = applet_resource_holder.applet_resource->GetIndexFromAruid(aruid);
+ return controller_data[aruid_index][npad_index];
}
const NPad::NpadControllerData& NPad::GetControllerFromNpadIdType(
- Core::HID::NpadIdType npad_id) const {
+ u64 aruid, Core::HID::NpadIdType npad_id) const {
if (!IsNpadIdValid(npad_id)) {
LOG_ERROR(Service_HID, "Invalid NpadIdType npad_id:{}", npad_id);
npad_id = Core::HID::NpadIdType::Player1;
}
const auto npad_index = NpadIdTypeToIndex(npad_id);
- return controller_data[npad_index];
+ const auto aruid_index = applet_resource_holder.applet_resource->GetIndexFromAruid(aruid);
+ return controller_data[aruid_index][npad_index];
}
Core::HID::SixAxisSensorProperties& NPad::GetSixaxisProperties(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle) {
- auto& controller = GetControllerFromHandle(sixaxis_handle);
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle) {
+ auto& controller = GetControllerFromHandle(aruid, sixaxis_handle);
switch (sixaxis_handle.npad_type) {
case Core::HID::NpadStyleIndex::ProController:
case Core::HID::NpadStyleIndex::Pokeball:
@@ -1319,8 +1307,8 @@ Core::HID::SixAxisSensorProperties& NPad::GetSixaxisProperties(
}
const Core::HID::SixAxisSensorProperties& NPad::GetSixaxisProperties(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle) const {
- const auto& controller = GetControllerFromHandle(sixaxis_handle);
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle) const {
+ const auto& controller = GetControllerFromHandle(aruid, sixaxis_handle);
switch (sixaxis_handle.npad_type) {
case Core::HID::NpadStyleIndex::ProController:
case Core::HID::NpadStyleIndex::Pokeball:
@@ -1342,7 +1330,8 @@ const Core::HID::SixAxisSensorProperties& NPad::GetSixaxisProperties(
}
AppletDetailedUiType NPad::GetAppletDetailedUiType(Core::HID::NpadIdType npad_id) {
- const auto& shared_memory = GetControllerFromNpadIdType(npad_id).shared_memory;
+ const auto aruid = applet_resource_holder.applet_resource->GetActiveAruid();
+ const auto& shared_memory = GetControllerFromNpadIdType(aruid, npad_id).shared_memory;
return {
.ui_variant = 0,
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h
index 4e2412356..8ab333064 100644
--- a/src/core/hle/service/hid/controllers/npad.h
+++ b/src/core/hle/service/hid/controllers/npad.h
@@ -11,6 +11,7 @@
#include "common/common_types.h"
#include "core/hid/hid_types.h"
#include "core/hle/service/hid/controllers/controller_base.h"
+#include "core/hle/service/hid/controllers/npad/npad_resource.h"
#include "core/hle/service/hid/controllers/types/npad_types.h"
namespace Core::HID {
@@ -30,111 +31,121 @@ class ServiceContext;
union Result;
namespace Service::HID {
+class AppletResource;
struct NpadInternalState;
struct NpadSixAxisSensorLifo;
struct NpadSharedMemoryFormat;
-class NPad final : public ControllerBase {
+class NPad final {
public:
- explicit NPad(Core::HID::HIDCore& hid_core_, NpadSharedMemoryFormat& npad_shared_memory_format,
- KernelHelpers::ServiceContext& service_context_);
- ~NPad() override;
+ explicit NPad(Core::HID::HIDCore& hid_core_, KernelHelpers::ServiceContext& service_context_);
+ ~NPad();
- // Called when the controller is initialized
- void OnInit() override;
+ Result Activate();
+ Result Activate(u64 aruid);
- // When the controller is released
- void OnRelease() override;
+ Result ActivateNpadResource();
+ Result ActivateNpadResource(u64 aruid);
// When the controller is requesting an update for the shared memory
- void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing);
- void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set);
- Core::HID::NpadStyleTag GetSupportedStyleSet() const;
+ Result SetSupportedNpadStyleSet(u64 aruid, Core::HID::NpadStyleSet supported_style_set);
+ Result GetSupportedNpadStyleSet(u64 aruid,
+ Core::HID::NpadStyleSet& out_supported_style_set) const;
+ Result GetMaskedSupportedNpadStyleSet(u64 aruid,
+ Core::HID::NpadStyleSet& out_supported_style_set) const;
- Result SetSupportedNpadIdTypes(std::span<const u8> data);
- void GetSupportedNpadIdTypes(u32* data, std::size_t max_length);
- std::size_t GetSupportedNpadIdTypesSize() const;
+ Result SetSupportedNpadIdType(u64 aruid,
+ std::span<const Core::HID::NpadIdType> supported_npad_list);
- void SetHoldType(NpadJoyHoldType joy_hold_type);
- NpadJoyHoldType GetHoldType() const;
+ Result SetNpadJoyHoldType(u64 aruid, NpadJoyHoldType hold_type);
+ Result GetNpadJoyHoldType(u64 aruid, NpadJoyHoldType& out_hold_type) const;
- void SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode);
- NpadHandheldActivationMode GetNpadHandheldActivationMode() const;
+ Result SetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode mode);
+ Result GetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode& out_mode) const;
- void SetNpadCommunicationMode(NpadCommunicationMode communication_mode_);
- NpadCommunicationMode GetNpadCommunicationMode() const;
-
- bool SetNpadMode(Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType npad_id,
+ bool SetNpadMode(u64 aruid, Core::HID::NpadIdType& new_npad_id, Core::HID::NpadIdType npad_id,
NpadJoyDeviceType npad_device_type, NpadJoyAssignmentMode assignment_mode);
- bool VibrateControllerAtIndex(Core::HID::NpadIdType npad_id, std::size_t device_index,
+ bool VibrateControllerAtIndex(u64 aruid, Core::HID::NpadIdType npad_id,
+ std::size_t device_index,
const Core::HID::VibrationValue& vibration_value);
- void VibrateController(const Core::HID::VibrationDeviceHandle& vibration_device_handle,
+ void VibrateController(u64 aruid,
+ const Core::HID::VibrationDeviceHandle& vibration_device_handle,
const Core::HID::VibrationValue& vibration_value);
void VibrateControllers(
- std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
+ u64 aruid, std::span<const Core::HID::VibrationDeviceHandle> vibration_device_handles,
std::span<const Core::HID::VibrationValue> vibration_values);
Core::HID::VibrationValue GetLastVibration(
- const Core::HID::VibrationDeviceHandle& vibration_device_handle) const;
+ u64 aruid, const Core::HID::VibrationDeviceHandle& vibration_device_handle) const;
void InitializeVibrationDevice(const Core::HID::VibrationDeviceHandle& vibration_device_handle);
- void InitializeVibrationDeviceAtIndex(Core::HID::NpadIdType npad_id, std::size_t device_index);
+ void InitializeVibrationDeviceAtIndex(u64 aruid, Core::HID::NpadIdType npad_id,
+ std::size_t device_index);
void SetPermitVibrationSession(bool permit_vibration_session);
bool IsVibrationDeviceMounted(
- const Core::HID::VibrationDeviceHandle& vibration_device_handle) const;
+ u64 aruid, const Core::HID::VibrationDeviceHandle& vibration_device_handle) const;
- Kernel::KReadableEvent& GetStyleSetChangedEvent(Core::HID::NpadIdType npad_id);
- void SignalStyleSetChangedEvent(Core::HID::NpadIdType npad_id) const;
+ Result AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
+ Core::HID::NpadIdType npad_id);
// Adds a new controller at an index.
- void AddNewControllerAt(Core::HID::NpadStyleIndex controller, Core::HID::NpadIdType npad_id);
+ void AddNewControllerAt(u64 aruid, Core::HID::NpadStyleIndex controller,
+ Core::HID::NpadIdType npad_id);
// Adds a new controller at an index with connection status.
- void UpdateControllerAt(Core::HID::NpadStyleIndex controller, Core::HID::NpadIdType npad_id,
- bool connected);
+ void UpdateControllerAt(u64 aruid, Core::HID::NpadStyleIndex controller,
+ Core::HID::NpadIdType npad_id, bool connected);
- Result DisconnectNpad(Core::HID::NpadIdType npad_id);
+ Result DisconnectNpad(u64 aruid, Core::HID::NpadIdType npad_id);
Result IsFirmwareUpdateAvailableForSixAxisSensor(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle, bool& is_firmware_available) const;
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle,
+ bool& is_firmware_available) const;
Result ResetIsSixAxisSensorDeviceNewlyAssigned(
- const Core::HID::SixAxisSensorHandle& sixaxis_handle);
-
- NpadSixAxisSensorLifo& GetSixAxisFullkeyLifo(Core::HID::NpadIdType npad_id);
- NpadSixAxisSensorLifo& GetSixAxisHandheldLifo(Core::HID::NpadIdType npad_id);
- NpadSixAxisSensorLifo& GetSixAxisDualLeftLifo(Core::HID::NpadIdType npad_id);
- NpadSixAxisSensorLifo& GetSixAxisDualRightLifo(Core::HID::NpadIdType npad_id);
- NpadSixAxisSensorLifo& GetSixAxisLeftLifo(Core::HID::NpadIdType npad_id);
- NpadSixAxisSensorLifo& GetSixAxisRightLifo(Core::HID::NpadIdType npad_id);
+ u64 aruid, const Core::HID::SixAxisSensorHandle& sixaxis_handle);
Result GetLedPattern(Core::HID::NpadIdType npad_id, Core::HID::LedPattern& pattern) const;
- Result IsUnintendedHomeButtonInputProtectionEnabled(Core::HID::NpadIdType npad_id,
- bool& is_enabled) const;
- Result SetUnintendedHomeButtonInputProtectionEnabled(bool is_protection_enabled,
- Core::HID::NpadIdType npad_id);
- void SetAnalogStickUseCenterClamp(bool use_center_clamp);
+
+ Result IsUnintendedHomeButtonInputProtectionEnabled(bool& out_is_enabled, u64 aruid,
+ Core::HID::NpadIdType npad_id) const;
+ Result EnableUnintendedHomeButtonInputProtection(u64 aruid, Core::HID::NpadIdType npad_id,
+ bool is_enabled);
+
+ void SetNpadAnalogStickUseCenterClamp(u64 aruid, bool is_enabled);
void ClearAllConnectedControllers();
void DisconnectAllConnectedControllers();
void ConnectAllDisconnectedControllers();
void ClearAllControllers();
- Result MergeSingleJoyAsDualJoy(Core::HID::NpadIdType npad_id_1,
+ Result MergeSingleJoyAsDualJoy(u64 aruid, Core::HID::NpadIdType npad_id_1,
Core::HID::NpadIdType npad_id_2);
- void StartLRAssignmentMode();
- void StopLRAssignmentMode();
- Result SwapNpadAssignment(Core::HID::NpadIdType npad_id_1, Core::HID::NpadIdType npad_id_2);
+ Result StartLrAssignmentMode(u64 aruid);
+ Result StopLrAssignmentMode(u64 aruid);
+ Result SwapNpadAssignment(u64 aruid, Core::HID::NpadIdType npad_id_1,
+ Core::HID::NpadIdType npad_id_2);
// Logical OR for all buttons presses on all controllers
// Specifically for cheat engine and other features.
Core::HID::NpadButton GetAndResetPressState();
- void ApplyNpadSystemCommonPolicy();
+ Result ApplyNpadSystemCommonPolicy(u64 aruid);
+ Result ApplyNpadSystemCommonPolicyFull(u64 aruid);
+ Result ClearNpadSystemCommonPolicy(u64 aruid);
+
+ void SetRevision(u64 aruid, NpadRevision revision);
+ NpadRevision GetRevision(u64 aruid);
+
+ Result RegisterAppletResourceUserId(u64 aruid);
+ void UnregisterAppletResourceUserId(u64 aruid);
+ void SetNpadExternals(std::shared_ptr<AppletResource> resource,
+ std::recursive_mutex* shared_mutex);
AppletDetailedUiType GetAppletDetailedUiType(Core::HID::NpadIdType npad_id);
@@ -146,12 +157,10 @@ private:
};
struct NpadControllerData {
- Kernel::KEvent* styleset_changed_event{};
NpadInternalState* shared_memory = nullptr;
Core::HID::EmulatedController* device = nullptr;
std::array<VibrationData, 2> vibration{};
- bool unintended_home_button_input_protection{};
bool is_connected{};
// Dual joycons can have only one side connected
@@ -166,39 +175,40 @@ private:
};
void ControllerUpdate(Core::HID::ControllerTriggerType type, std::size_t controller_idx);
- void InitNewlyAddedController(Core::HID::NpadIdType npad_id);
- bool IsControllerSupported(Core::HID::NpadStyleIndex controller) const;
- void RequestPadStateUpdate(Core::HID::NpadIdType npad_id);
+ void InitNewlyAddedController(u64 aruid, Core::HID::NpadIdType npad_id);
+ void RequestPadStateUpdate(u64 aruid, Core::HID::NpadIdType npad_id);
void WriteEmptyEntry(NpadInternalState* npad);
NpadControllerData& GetControllerFromHandle(
- const Core::HID::VibrationDeviceHandle& device_handle);
+ u64 aruid, const Core::HID::VibrationDeviceHandle& device_handle);
const NpadControllerData& GetControllerFromHandle(
- const Core::HID::VibrationDeviceHandle& device_handle) const;
+ u64 aruid, const Core::HID::VibrationDeviceHandle& device_handle) const;
NpadControllerData& GetControllerFromHandle(
- const Core::HID::SixAxisSensorHandle& device_handle);
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle);
const NpadControllerData& GetControllerFromHandle(
- const Core::HID::SixAxisSensorHandle& device_handle) const;
- NpadControllerData& GetControllerFromNpadIdType(Core::HID::NpadIdType npad_id);
- const NpadControllerData& GetControllerFromNpadIdType(Core::HID::NpadIdType npad_id) const;
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle) const;
+ NpadControllerData& GetControllerFromNpadIdType(u64 aruid, Core::HID::NpadIdType npad_id);
+ const NpadControllerData& GetControllerFromNpadIdType(u64 aruid,
+ Core::HID::NpadIdType npad_id) const;
Core::HID::SixAxisSensorProperties& GetSixaxisProperties(
- const Core::HID::SixAxisSensorHandle& device_handle);
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle);
const Core::HID::SixAxisSensorProperties& GetSixaxisProperties(
- const Core::HID::SixAxisSensorHandle& device_handle) const;
+ u64 aruid, const Core::HID::SixAxisSensorHandle& device_handle) const;
- std::atomic<u64> press_state{};
-
- std::array<NpadControllerData, NpadCount> controller_data{};
+ Core::HID::HIDCore& hid_core;
KernelHelpers::ServiceContext& service_context;
- std::mutex mutex;
- std::vector<Core::HID::NpadIdType> supported_npad_id_types{};
- NpadJoyHoldType hold_type{NpadJoyHoldType::Vertical};
- NpadHandheldActivationMode handheld_activation_mode{NpadHandheldActivationMode::Dual};
- NpadCommunicationMode communication_mode{NpadCommunicationMode::Default};
- bool permit_vibration_session_enabled{false};
- bool analog_stick_use_center_clamp{false};
- bool is_in_lr_assignment_mode{false};
- bool is_controller_initialized{false};
+
+ s32 ref_counter{};
+ mutable std::mutex mutex;
+ NPadResource npad_resource;
+ AppletResourceHolder applet_resource_holder{};
+ Kernel::KEvent* input_event{nullptr};
+ std::mutex* input_mutex{nullptr};
+
+ std::atomic<u64> press_state{};
+ bool permit_vibration_session_enabled;
+ std::array<std::array<NpadControllerData, MaxSupportedNpadIdTypes>, AruidIndexMax>
+ controller_data{};
};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/npad/npad_data.cpp b/src/core/hle/service/hid/controllers/npad/npad_data.cpp
new file mode 100644
index 000000000..d2423b6d3
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/npad/npad_data.cpp
@@ -0,0 +1,228 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/hid/controllers/npad/npad_data.h"
+#include "core/hle/service/hid/hid_util.h"
+
+namespace Service::HID {
+
+NPadData::NPadData() {
+ ClearNpadSystemCommonPolicy();
+}
+
+NPadData::~NPadData() = default;
+
+NpadStatus NPadData::GetNpadStatus() const {
+ return status;
+}
+
+void NPadData::SetNpadAnalogStickUseCenterClamp(bool is_enabled) {
+ status.use_center_clamp.Assign(is_enabled);
+}
+
+bool NPadData::GetNpadAnalogStickUseCenterClamp() const {
+ return status.use_center_clamp.As<bool>();
+}
+
+void NPadData::SetNpadSystemExtStateEnabled(bool is_enabled) {
+ status.system_ext_state.Assign(is_enabled);
+}
+
+bool NPadData::GetNpadSystemExtState() const {
+ return status.system_ext_state.As<bool>();
+}
+
+Result NPadData::SetSupportedNpadIdType(std::span<const Core::HID::NpadIdType> list) {
+ // Note: Real limit is 11. But array size is 10. N's bug?
+ if (list.size() > MaxSupportedNpadIdTypes) {
+ return ResultInvalidArraySize;
+ }
+
+ supported_npad_id_types_count = list.size();
+ memcpy(supported_npad_id_types.data(), list.data(),
+ list.size() * sizeof(Core::HID::NpadIdType));
+
+ return ResultSuccess;
+}
+
+std::size_t NPadData::GetSupportedNpadIdType(std::span<Core::HID::NpadIdType> out_list) const {
+ std::size_t out_size = std::min(supported_npad_id_types_count, out_list.size());
+
+ memcpy(out_list.data(), supported_npad_id_types.data(),
+ out_size * sizeof(Core::HID::NpadIdType));
+
+ return out_size;
+}
+
+bool NPadData::IsNpadIdTypeSupported(Core::HID::NpadIdType npad_id) const {
+ for (std::size_t i = 0; i < supported_npad_id_types_count; i++) {
+ if (supported_npad_id_types[i] == npad_id) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void NPadData::SetNpadSystemCommonPolicy(bool is_full_policy) {
+ supported_npad_style_set = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::JoyDual |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ handheld_activation_mode = NpadHandheldActivationMode::Dual;
+
+ status.is_supported_styleset_set.Assign(true);
+ status.is_hold_type_set.Assign(true);
+ status.lr_assignment_mode.Assign(false);
+ status.is_policy.Assign(true);
+ if (is_full_policy) {
+ status.is_full_policy.Assign(true);
+ }
+
+ supported_npad_id_types_count = 10;
+ supported_npad_id_types[0] = Core::HID::NpadIdType::Player1;
+ supported_npad_id_types[1] = Core::HID::NpadIdType::Player2;
+ supported_npad_id_types[2] = Core::HID::NpadIdType::Player3;
+ supported_npad_id_types[3] = Core::HID::NpadIdType::Player4;
+ supported_npad_id_types[4] = Core::HID::NpadIdType::Player5;
+ supported_npad_id_types[5] = Core::HID::NpadIdType::Player6;
+ supported_npad_id_types[6] = Core::HID::NpadIdType::Player7;
+ supported_npad_id_types[7] = Core::HID::NpadIdType::Player8;
+ supported_npad_id_types[8] = Core::HID::NpadIdType::Other;
+ supported_npad_id_types[9] = Core::HID::NpadIdType::Handheld;
+
+ for (auto& input_protection : is_unintended_home_button_input_protection) {
+ input_protection = true;
+ }
+}
+
+void NPadData::ClearNpadSystemCommonPolicy() {
+ status.raw = 0;
+ supported_npad_style_set = Core::HID::NpadStyleSet::All;
+ npad_hold_type = NpadJoyHoldType::Vertical;
+ handheld_activation_mode = NpadHandheldActivationMode::Dual;
+
+ for (auto& button_assignment : npad_button_assignment) {
+ button_assignment = Core::HID::NpadButton::None;
+ }
+
+ supported_npad_id_types_count = 10;
+ supported_npad_id_types[0] = Core::HID::NpadIdType::Player1;
+ supported_npad_id_types[1] = Core::HID::NpadIdType::Player2;
+ supported_npad_id_types[2] = Core::HID::NpadIdType::Player3;
+ supported_npad_id_types[3] = Core::HID::NpadIdType::Player4;
+ supported_npad_id_types[4] = Core::HID::NpadIdType::Player5;
+ supported_npad_id_types[5] = Core::HID::NpadIdType::Player6;
+ supported_npad_id_types[6] = Core::HID::NpadIdType::Player7;
+ supported_npad_id_types[7] = Core::HID::NpadIdType::Player8;
+ supported_npad_id_types[8] = Core::HID::NpadIdType::Other;
+ supported_npad_id_types[9] = Core::HID::NpadIdType::Handheld;
+
+ for (auto& input_protection : is_unintended_home_button_input_protection) {
+ input_protection = true;
+ }
+}
+
+void NPadData::SetNpadJoyHoldType(NpadJoyHoldType hold_type) {
+ npad_hold_type = hold_type;
+ status.is_hold_type_set.Assign(true);
+}
+
+NpadJoyHoldType NPadData::GetNpadJoyHoldType() const {
+ return npad_hold_type;
+}
+
+void NPadData::SetHandheldActivationMode(NpadHandheldActivationMode activation_mode) {
+ handheld_activation_mode = activation_mode;
+}
+
+NpadHandheldActivationMode NPadData::GetHandheldActivationMode() const {
+ return handheld_activation_mode;
+}
+
+void NPadData::SetSupportedNpadStyleSet(Core::HID::NpadStyleSet style_set) {
+ supported_npad_style_set = style_set;
+ status.is_supported_styleset_set.Assign(true);
+ status.is_hold_type_set.Assign(true);
+}
+
+Core::HID::NpadStyleSet NPadData::GetSupportedNpadStyleSet() const {
+ return supported_npad_style_set;
+}
+
+bool NPadData::IsNpadStyleIndexSupported(Core::HID::NpadStyleIndex style_index) const {
+ Core::HID::NpadStyleTag style = {supported_npad_style_set};
+ switch (style_index) {
+ case Core::HID::NpadStyleIndex::ProController:
+ return style.fullkey.As<bool>();
+ case Core::HID::NpadStyleIndex::Handheld:
+ return style.handheld.As<bool>();
+ case Core::HID::NpadStyleIndex::JoyconDual:
+ return style.joycon_dual.As<bool>();
+ case Core::HID::NpadStyleIndex::JoyconLeft:
+ return style.joycon_left.As<bool>();
+ case Core::HID::NpadStyleIndex::JoyconRight:
+ return style.joycon_right.As<bool>();
+ case Core::HID::NpadStyleIndex::GameCube:
+ return style.gamecube.As<bool>();
+ case Core::HID::NpadStyleIndex::Pokeball:
+ return style.palma.As<bool>();
+ case Core::HID::NpadStyleIndex::NES:
+ return style.lark.As<bool>();
+ case Core::HID::NpadStyleIndex::SNES:
+ return style.lucia.As<bool>();
+ case Core::HID::NpadStyleIndex::N64:
+ return style.lagoon.As<bool>();
+ case Core::HID::NpadStyleIndex::SegaGenesis:
+ return style.lager.As<bool>();
+ default:
+ return false;
+ }
+}
+
+void NPadData::SetLrAssignmentMode(bool is_enabled) {
+ status.lr_assignment_mode.Assign(is_enabled);
+}
+
+bool NPadData::GetLrAssignmentMode() const {
+ return status.lr_assignment_mode.As<bool>();
+}
+
+void NPadData::SetAssigningSingleOnSlSrPress(bool is_enabled) {
+ status.assigning_single_on_sl_sr_press.Assign(is_enabled);
+}
+
+bool NPadData::GetAssigningSingleOnSlSrPress() const {
+ return status.assigning_single_on_sl_sr_press.As<bool>();
+}
+
+void NPadData::SetHomeProtectionEnabled(bool is_enabled, Core::HID::NpadIdType npad_id) {
+ is_unintended_home_button_input_protection[NpadIdTypeToIndex(npad_id)] = is_enabled;
+}
+
+bool NPadData::GetHomeProtectionEnabled(Core::HID::NpadIdType npad_id) const {
+ return is_unintended_home_button_input_protection[NpadIdTypeToIndex(npad_id)];
+}
+
+void NPadData::SetCaptureButtonAssignment(Core::HID::NpadButton button_assignment,
+ std::size_t style_index) {
+ npad_button_assignment[style_index] = button_assignment;
+}
+
+Core::HID::NpadButton NPadData::GetCaptureButtonAssignment(std::size_t style_index) const {
+ return npad_button_assignment[style_index];
+}
+
+std::size_t NPadData::GetNpadCaptureButtonAssignmentList(
+ std::span<Core::HID::NpadButton> out_list) const {
+ for (std::size_t i = 0; i < out_list.size(); i++) {
+ Core::HID::NpadStyleSet style_set = GetStylesetByIndex(i);
+ if ((style_set & supported_npad_style_set) == Core::HID::NpadStyleSet::None ||
+ npad_button_assignment[i] == Core::HID::NpadButton::None) {
+ return i;
+ }
+ out_list[i] = npad_button_assignment[i];
+ }
+
+ return out_list.size();
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/npad/npad_data.h b/src/core/hle/service/hid/controllers/npad/npad_data.h
new file mode 100644
index 000000000..f799a9f9c
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/npad/npad_data.h
@@ -0,0 +1,88 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <array>
+#include <span>
+
+#include "common/common_types.h"
+#include "core/hid/hid_types.h"
+#include "core/hle/result.h"
+#include "core/hle/service/hid/controllers/types/npad_types.h"
+
+namespace Service::HID {
+
+struct NpadStatus {
+ union {
+ u32 raw{};
+
+ BitField<0, 1, u32> is_supported_styleset_set;
+ BitField<1, 1, u32> is_hold_type_set;
+ BitField<2, 1, u32> lr_assignment_mode;
+ BitField<3, 1, u32> assigning_single_on_sl_sr_press;
+ BitField<4, 1, u32> is_full_policy;
+ BitField<5, 1, u32> is_policy;
+ BitField<6, 1, u32> use_center_clamp;
+ BitField<7, 1, u32> system_ext_state;
+ };
+};
+static_assert(sizeof(NpadStatus) == 4, "NpadStatus is an invalid size");
+
+/// Handles Npad request from HID interfaces
+class NPadData final {
+public:
+ explicit NPadData();
+ ~NPadData();
+
+ NpadStatus GetNpadStatus() const;
+
+ void SetNpadAnalogStickUseCenterClamp(bool is_enabled);
+ bool GetNpadAnalogStickUseCenterClamp() const;
+
+ void SetNpadSystemExtStateEnabled(bool is_enabled);
+ bool GetNpadSystemExtState() const;
+
+ Result SetSupportedNpadIdType(std::span<const Core::HID::NpadIdType> list);
+ std::size_t GetSupportedNpadIdType(std::span<Core::HID::NpadIdType> out_list) const;
+ bool IsNpadIdTypeSupported(Core::HID::NpadIdType npad_id) const;
+
+ void SetNpadSystemCommonPolicy(bool is_full_policy);
+ void ClearNpadSystemCommonPolicy();
+
+ void SetNpadJoyHoldType(NpadJoyHoldType hold_type);
+ NpadJoyHoldType GetNpadJoyHoldType() const;
+
+ void SetHandheldActivationMode(NpadHandheldActivationMode activation_mode);
+ NpadHandheldActivationMode GetHandheldActivationMode() const;
+
+ void SetSupportedNpadStyleSet(Core::HID::NpadStyleSet style_set);
+ Core::HID::NpadStyleSet GetSupportedNpadStyleSet() const;
+ bool IsNpadStyleIndexSupported(Core::HID::NpadStyleIndex style_index) const;
+
+ void SetLrAssignmentMode(bool is_enabled);
+ bool GetLrAssignmentMode() const;
+
+ void SetAssigningSingleOnSlSrPress(bool is_enabled);
+ bool GetAssigningSingleOnSlSrPress() const;
+
+ void SetHomeProtectionEnabled(bool is_enabled, Core::HID::NpadIdType npad_id);
+ bool GetHomeProtectionEnabled(Core::HID::NpadIdType npad_id) const;
+
+ void SetCaptureButtonAssignment(Core::HID::NpadButton button_assignment,
+ std::size_t style_index);
+ Core::HID::NpadButton GetCaptureButtonAssignment(std::size_t style_index) const;
+ std::size_t GetNpadCaptureButtonAssignmentList(std::span<Core::HID::NpadButton> out_list) const;
+
+private:
+ NpadStatus status{};
+ Core::HID::NpadStyleSet supported_npad_style_set{Core::HID::NpadStyleSet::All};
+ NpadJoyHoldType npad_hold_type{NpadJoyHoldType::Vertical};
+ NpadHandheldActivationMode handheld_activation_mode{};
+ std::array<Core::HID::NpadIdType, MaxSupportedNpadIdTypes> supported_npad_id_types{};
+ std::array<Core::HID::NpadButton, StyleIndexCount> npad_button_assignment{};
+ std::size_t supported_npad_id_types_count{};
+ std::array<bool, MaxSupportedNpadIdTypes> is_unintended_home_button_input_protection{};
+};
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/npad/npad_resource.cpp b/src/core/hle/service/hid/controllers/npad/npad_resource.cpp
new file mode 100644
index 000000000..0a9341a39
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/npad/npad_resource.cpp
@@ -0,0 +1,685 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/kernel/k_event.h"
+#include "core/hle/kernel/k_readable_event.h"
+#include "core/hle/service/hid/controllers/npad/npad_resource.h"
+#include "core/hle/service/hid/controllers/types/npad_types.h"
+#include "core/hle/service/hid/errors.h"
+#include "core/hle/service/hid/hid_util.h"
+
+namespace Service::HID {
+
+NPadResource::NPadResource(KernelHelpers::ServiceContext& context) : service_context{context} {}
+
+NPadResource::~NPadResource() = default;
+
+Result NPadResource::RegisterAppletResourceUserId(u64 aruid) {
+ const auto aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index < AruidIndexMax) {
+ return ResultAruidAlreadyRegistered;
+ }
+
+ std::size_t data_index = AruidIndexMax;
+ for (std::size_t i = 0; i < AruidIndexMax; i++) {
+ if (!state[i].flag.is_initialized) {
+ data_index = i;
+ break;
+ }
+ }
+
+ if (data_index == AruidIndexMax) {
+ return ResultAruidNoAvailableEntries;
+ }
+
+ auto& aruid_data = state[data_index];
+
+ aruid_data.aruid = aruid;
+ aruid_data.flag.is_initialized.Assign(true);
+
+ data_index = AruidIndexMax;
+ for (std::size_t i = 0; i < AruidIndexMax; i++) {
+ if (registration_list.flag[i] == RegistrationStatus::Initialized) {
+ if (registration_list.aruid[i] != aruid) {
+ continue;
+ }
+ data_index = i;
+ break;
+ }
+ if (registration_list.flag[i] == RegistrationStatus::None) {
+ data_index = i;
+ break;
+ }
+ }
+
+ if (data_index == AruidIndexMax) {
+ return ResultSuccess;
+ }
+
+ registration_list.flag[data_index] = RegistrationStatus::Initialized;
+ registration_list.aruid[data_index] = aruid;
+
+ return ResultSuccess;
+}
+
+void NPadResource::UnregisterAppletResourceUserId(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+
+ DestroyStyleSetUpdateEvents(aruid);
+ if (aruid_index < AruidIndexMax) {
+ state[aruid_index] = {};
+ registration_list.flag[aruid_index] = RegistrationStatus::PendingDelete;
+ }
+}
+
+void NPadResource::DestroyStyleSetUpdateEvents(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+
+ if (aruid_index >= AruidIndexMax) {
+ return;
+ }
+
+ for (auto& controller_state : state[aruid_index].controller_state) {
+ if (!controller_state.is_styleset_update_event_initialized) {
+ continue;
+ }
+ service_context.CloseEvent(controller_state.style_set_update_event);
+ controller_state.is_styleset_update_event_initialized = false;
+ }
+}
+
+Result NPadResource::Activate(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+
+ if (aruid_index >= AruidIndexMax) {
+ return ResultSuccess;
+ }
+
+ auto& state_data = state[aruid_index];
+
+ if (state_data.flag.is_assigned) {
+ return ResultAruidAlreadyRegistered;
+ }
+
+ state_data.flag.is_assigned.Assign(true);
+ state_data.data.ClearNpadSystemCommonPolicy();
+ state_data.npad_revision = NpadRevision::Revision0;
+ state_data.button_config = {};
+
+ if (active_data_aruid == aruid) {
+ default_hold_type = active_data.GetNpadJoyHoldType();
+ active_data.SetNpadJoyHoldType(default_hold_type);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::Activate() {
+ if (ref_counter == std::numeric_limits<s32>::max() - 1) {
+ return ResultAppletResourceOverflow;
+ }
+ if (ref_counter == 0) {
+ RegisterAppletResourceUserId(SystemAruid);
+ Activate(SystemAruid);
+ }
+ ref_counter++;
+ return ResultSuccess;
+}
+
+Result NPadResource::Deactivate() {
+ if (ref_counter == 0) {
+ return ResultAppletResourceNotInitialized;
+ }
+
+ UnregisterAppletResourceUserId(SystemAruid);
+ ref_counter--;
+ return ResultSuccess;
+}
+
+NPadData* NPadResource::GetActiveData() {
+ return &active_data;
+}
+
+u64 NPadResource::GetActiveDataAruid() {
+ return active_data_aruid;
+}
+
+void NPadResource::SetAppletResourceUserId(u64 aruid) {
+ if (active_data_aruid == aruid) {
+ return;
+ }
+
+ active_data_aruid = aruid;
+ default_hold_type = active_data.GetNpadJoyHoldType();
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+
+ if (aruid_index >= AruidIndexMax) {
+ return;
+ }
+
+ auto& data = state[aruid_index].data;
+ if (data.GetNpadStatus().is_policy || data.GetNpadStatus().is_full_policy) {
+ data.SetNpadJoyHoldType(default_hold_type);
+ }
+
+ active_data = data;
+ if (data.GetNpadStatus().is_hold_type_set) {
+ active_data.SetNpadJoyHoldType(default_hold_type);
+ }
+}
+
+std::size_t NPadResource::GetIndexFromAruid(u64 aruid) const {
+ for (std::size_t i = 0; i < AruidIndexMax; i++) {
+ if (registration_list.flag[i] == RegistrationStatus::Initialized &&
+ registration_list.aruid[i] == aruid) {
+ return i;
+ }
+ }
+ return AruidIndexMax;
+}
+
+Result NPadResource::ApplyNpadSystemCommonPolicy(u64 aruid, bool is_full_policy) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ data.SetNpadSystemCommonPolicy(is_full_policy);
+ data.SetNpadJoyHoldType(default_hold_type);
+ if (active_data_aruid == aruid) {
+ active_data.SetNpadSystemCommonPolicy(is_full_policy);
+ active_data.SetNpadJoyHoldType(default_hold_type);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::ClearNpadSystemCommonPolicy(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.ClearNpadSystemCommonPolicy();
+ if (active_data_aruid == aruid) {
+ active_data.ClearNpadSystemCommonPolicy();
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::SetSupportedNpadStyleSet(u64 aruid, Core::HID::NpadStyleSet style_set) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ data.SetSupportedNpadStyleSet(style_set);
+ if (active_data_aruid == aruid) {
+ active_data.SetSupportedNpadStyleSet(style_set);
+ active_data.SetNpadJoyHoldType(data.GetNpadJoyHoldType());
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::GetSupportedNpadStyleSet(Core::HID::NpadStyleSet& out_style_Set,
+ u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ if (!data.GetNpadStatus().is_supported_styleset_set) {
+ return ResultUndefinedStyleset;
+ }
+
+ out_style_Set = data.GetSupportedNpadStyleSet();
+ return ResultSuccess;
+}
+
+Result NPadResource::GetMaskedSupportedNpadStyleSet(Core::HID::NpadStyleSet& out_style_set,
+ u64 aruid) const {
+ if (aruid == SystemAruid) {
+ out_style_set = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Palma |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ return ResultSuccess;
+ }
+
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ if (!data.GetNpadStatus().is_supported_styleset_set) {
+ return ResultUndefinedStyleset;
+ }
+
+ Core::HID::NpadStyleSet mask{Core::HID::NpadStyleSet::None};
+ out_style_set = data.GetSupportedNpadStyleSet();
+
+ switch (state[aruid_index].npad_revision) {
+ case NpadRevision::Revision1:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::SystemExt |
+ Core::HID::NpadStyleSet::System;
+ break;
+ case NpadRevision::Revision2:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::Lark |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ break;
+ case NpadRevision::Revision3:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::Lark |
+ Core::HID::NpadStyleSet::HandheldLark | Core::HID::NpadStyleSet::Lucia |
+ Core::HID::NpadStyleSet::Lagoon | Core::HID::NpadStyleSet::Lager |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ break;
+ default:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::SystemExt |
+ Core::HID::NpadStyleSet::System;
+ break;
+ }
+
+ out_style_set = out_style_set & mask;
+ return ResultSuccess;
+}
+
+Result NPadResource::GetAvailableStyleset(Core::HID::NpadStyleSet& out_style_set, u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ if (!data.GetNpadStatus().is_supported_styleset_set) {
+ return ResultUndefinedStyleset;
+ }
+
+ Core::HID::NpadStyleSet mask{Core::HID::NpadStyleSet::None};
+ out_style_set = data.GetSupportedNpadStyleSet();
+
+ switch (state[aruid_index].npad_revision) {
+ case NpadRevision::Revision1:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::SystemExt |
+ Core::HID::NpadStyleSet::System;
+ break;
+ case NpadRevision::Revision2:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::Lark |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ break;
+ case NpadRevision::Revision3:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::Gc |
+ Core::HID::NpadStyleSet::Palma | Core::HID::NpadStyleSet::Lark |
+ Core::HID::NpadStyleSet::HandheldLark | Core::HID::NpadStyleSet::Lucia |
+ Core::HID::NpadStyleSet::Lagoon | Core::HID::NpadStyleSet::Lager |
+ Core::HID::NpadStyleSet::SystemExt | Core::HID::NpadStyleSet::System;
+ break;
+ default:
+ mask = Core::HID::NpadStyleSet::Fullkey | Core::HID::NpadStyleSet::Handheld |
+ Core::HID::NpadStyleSet::JoyDual | Core::HID::NpadStyleSet::JoyLeft |
+ Core::HID::NpadStyleSet::JoyRight | Core::HID::NpadStyleSet::SystemExt |
+ Core::HID::NpadStyleSet::System;
+ break;
+ }
+
+ out_style_set = out_style_set & mask;
+ return ResultSuccess;
+}
+
+NpadRevision NPadResource::GetNpadRevision(u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return NpadRevision::Revision0;
+ }
+
+ return state[aruid_index].npad_revision;
+}
+
+Result NPadResource::IsSupportedNpadStyleSet(bool& is_set, u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ is_set = state[aruid_index].data.GetNpadStatus().is_supported_styleset_set.Value() != 0;
+ return ResultSuccess;
+}
+
+Result NPadResource::SetNpadJoyHoldType(u64 aruid, NpadJoyHoldType hold_type) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetNpadJoyHoldType(hold_type);
+ if (active_data_aruid == aruid) {
+ active_data.SetNpadJoyHoldType(hold_type);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::GetNpadJoyHoldType(NpadJoyHoldType& hold_type, u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& data = state[aruid_index].data;
+ if (data.GetNpadStatus().is_policy || data.GetNpadStatus().is_full_policy) {
+ hold_type = active_data.GetNpadJoyHoldType();
+ return ResultSuccess;
+ }
+ hold_type = data.GetNpadJoyHoldType();
+ return ResultSuccess;
+}
+
+Result NPadResource::SetNpadHandheldActivationMode(u64 aruid,
+ NpadHandheldActivationMode activation_mode) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetHandheldActivationMode(activation_mode);
+ if (active_data_aruid == aruid) {
+ active_data.SetHandheldActivationMode(activation_mode);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::GetNpadHandheldActivationMode(NpadHandheldActivationMode& activation_mode,
+ u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ activation_mode = state[aruid_index].data.GetHandheldActivationMode();
+ return ResultSuccess;
+}
+
+Result NPadResource::SetSupportedNpadIdType(
+ u64 aruid, std::span<const Core::HID::NpadIdType> supported_npad_list) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+ if (supported_npad_list.size() > MaxSupportedNpadIdTypes) {
+ return ResultInvalidArraySize;
+ }
+
+ Result result = state[aruid_index].data.SetSupportedNpadIdType(supported_npad_list);
+ if (result.IsSuccess() && active_data_aruid == aruid) {
+ result = active_data.SetSupportedNpadIdType(supported_npad_list);
+ }
+
+ return result;
+}
+
+bool NPadResource::IsControllerSupported(u64 aruid, Core::HID::NpadStyleIndex style_index) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return false;
+ }
+ return state[aruid_index].data.IsNpadStyleIndexSupported(style_index);
+}
+
+Result NPadResource::SetLrAssignmentMode(u64 aruid, bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetLrAssignmentMode(is_enabled);
+ if (active_data_aruid == aruid) {
+ active_data.SetLrAssignmentMode(is_enabled);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::GetLrAssignmentMode(bool& is_enabled, u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ is_enabled = state[aruid_index].data.GetLrAssignmentMode();
+ return ResultSuccess;
+}
+
+Result NPadResource::SetAssigningSingleOnSlSrPress(u64 aruid, bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetAssigningSingleOnSlSrPress(is_enabled);
+ if (active_data_aruid == aruid) {
+ active_data.SetAssigningSingleOnSlSrPress(is_enabled);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::IsAssigningSingleOnSlSrPressEnabled(bool& is_enabled, u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ is_enabled = state[aruid_index].data.GetAssigningSingleOnSlSrPress();
+ return ResultSuccess;
+}
+
+Result NPadResource::AcquireNpadStyleSetUpdateEventHandle(u64 aruid,
+ Kernel::KReadableEvent** out_event,
+ Core::HID::NpadIdType npad_id) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ auto& controller_state = state[aruid_index].controller_state[NpadIdTypeToIndex(npad_id)];
+ if (!controller_state.is_styleset_update_event_initialized) {
+ // Auto clear = true
+ controller_state.style_set_update_event =
+ service_context.CreateEvent("NpadResource:StylesetUpdateEvent");
+
+ // Assume creating the event succeeds otherwise crash the system here
+ controller_state.is_styleset_update_event_initialized = true;
+ }
+
+ *out_event = &controller_state.style_set_update_event->GetReadableEvent();
+
+ if (controller_state.is_styleset_update_event_initialized) {
+ controller_state.style_set_update_event->Signal();
+ }
+
+ return ResultSuccess;
+}
+
+Result NPadResource::SignalStyleSetUpdateEvent(u64 aruid, Core::HID::NpadIdType npad_id) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+ auto controller = state[aruid_index].controller_state[NpadIdTypeToIndex(npad_id)];
+ if (controller.is_styleset_update_event_initialized) {
+ controller.style_set_update_event->Signal();
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::GetHomeProtectionEnabled(bool& is_enabled, u64 aruid,
+ Core::HID::NpadIdType npad_id) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ is_enabled = state[aruid_index].data.GetHomeProtectionEnabled(npad_id);
+ return ResultSuccess;
+}
+
+Result NPadResource::SetHomeProtectionEnabled(u64 aruid, Core::HID::NpadIdType npad_id,
+ bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetHomeProtectionEnabled(is_enabled, npad_id);
+ if (active_data_aruid == aruid) {
+ active_data.SetHomeProtectionEnabled(is_enabled, npad_id);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::SetNpadAnalogStickUseCenterClamp(u64 aruid, bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetNpadAnalogStickUseCenterClamp(is_enabled);
+ if (active_data_aruid == aruid) {
+ active_data.SetNpadAnalogStickUseCenterClamp(is_enabled);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::SetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id, std::size_t index,
+ Core::HID::NpadButton button_config) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].button_config[NpadIdTypeToIndex(npad_id)][index] = button_config;
+ return ResultSuccess;
+}
+
+Core::HID::NpadButton NPadResource::GetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id,
+ std::size_t index, Core::HID::NpadButton mask,
+ bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return Core::HID::NpadButton::None;
+ }
+
+ auto& button_config = state[aruid_index].button_config[NpadIdTypeToIndex(npad_id)][index];
+ if (is_enabled) {
+ button_config = button_config | mask;
+ return button_config;
+ }
+
+ button_config = Core::HID::NpadButton::None;
+ return Core::HID::NpadButton::None;
+}
+
+void NPadResource::ResetButtonConfig() {
+ for (auto& selected_state : state) {
+ selected_state.button_config = {};
+ }
+}
+
+Result NPadResource::SetNpadCaptureButtonAssignment(u64 aruid,
+ Core::HID::NpadStyleSet npad_style_set,
+ Core::HID::NpadButton button_assignment) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ // Must be a power of two
+ const auto raw_styleset = static_cast<u32>(npad_style_set);
+ if (raw_styleset == 0 && (raw_styleset & (raw_styleset - 1)) != 0) {
+ return ResultMultipleStyleSetSelected;
+ }
+
+ std::size_t style_index{};
+ Core::HID::NpadStyleSet style_selected{};
+ for (style_index = 0; style_index < StyleIndexCount; ++style_index) {
+ style_selected = GetStylesetByIndex(style_index);
+ if (npad_style_set == style_selected) {
+ break;
+ }
+ }
+
+ if (style_selected == Core::HID::NpadStyleSet::None) {
+ return ResultMultipleStyleSetSelected;
+ }
+
+ state[aruid_index].data.SetCaptureButtonAssignment(button_assignment, style_index);
+ if (active_data_aruid == aruid) {
+ active_data.SetCaptureButtonAssignment(button_assignment, style_index);
+ }
+ return ResultSuccess;
+}
+
+Result NPadResource::ClearNpadCaptureButtonAssignment(u64 aruid) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ for (std::size_t i = 0; i < StyleIndexCount; i++) {
+ state[aruid_index].data.SetCaptureButtonAssignment(Core::HID::NpadButton::None, i);
+ if (active_data_aruid == aruid) {
+ active_data.SetCaptureButtonAssignment(Core::HID::NpadButton::None, i);
+ }
+ }
+ return ResultSuccess;
+}
+
+std::size_t NPadResource::GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list,
+ u64 aruid) const {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return 0;
+ }
+ return state[aruid_index].data.GetNpadCaptureButtonAssignmentList(out_list);
+}
+
+void NPadResource::SetNpadRevision(u64 aruid, NpadRevision revision) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return;
+ }
+
+ state[aruid_index].npad_revision = revision;
+}
+
+Result NPadResource::SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled) {
+ const u64 aruid_index = GetIndexFromAruid(aruid);
+ if (aruid_index >= AruidIndexMax) {
+ return ResultNpadNotConnected;
+ }
+
+ state[aruid_index].data.SetNpadAnalogStickUseCenterClamp(is_enabled);
+ if (active_data_aruid == aruid) {
+ active_data.SetNpadAnalogStickUseCenterClamp(is_enabled);
+ }
+ return ResultSuccess;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/npad/npad_resource.h b/src/core/hle/service/hid/controllers/npad/npad_resource.h
new file mode 100644
index 000000000..4c7e6ab0e
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/npad/npad_resource.h
@@ -0,0 +1,132 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <array>
+#include <mutex>
+#include <span>
+
+#include "common/common_types.h"
+#include "core/hid/hid_types.h"
+#include "core/hle/result.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/npad/npad_data.h"
+#include "core/hle/service/hid/controllers/types/npad_types.h"
+#include "core/hle/service/kernel_helpers.h"
+
+namespace Core {
+class System;
+}
+
+namespace Kernel {
+class KReadableEvent;
+}
+
+namespace Service::HID {
+struct DataStatusFlag;
+
+struct NpadControllerState {
+ bool is_styleset_update_event_initialized{};
+ INSERT_PADDING_BYTES(0x7);
+ Kernel::KEvent* style_set_update_event{nullptr};
+ INSERT_PADDING_BYTES(0x27);
+};
+
+struct NpadState {
+ DataStatusFlag flag{};
+ u64 aruid{};
+ NPadData data{};
+ std::array<std::array<Core::HID::NpadButton, StyleIndexCount>, MaxSupportedNpadIdTypes>
+ button_config;
+ std::array<NpadControllerState, MaxSupportedNpadIdTypes> controller_state;
+ NpadRevision npad_revision;
+};
+
+/// Handles Npad request from HID interfaces
+class NPadResource final {
+public:
+ explicit NPadResource(KernelHelpers::ServiceContext& context);
+ ~NPadResource();
+
+ NPadData* GetActiveData();
+ u64 GetActiveDataAruid();
+
+ Result RegisterAppletResourceUserId(u64 aruid);
+ void UnregisterAppletResourceUserId(u64 aruid);
+
+ void DestroyStyleSetUpdateEvents(u64 aruid);
+
+ Result Activate(u64 aruid);
+ Result Activate();
+ Result Deactivate();
+
+ void SetAppletResourceUserId(u64 aruid);
+ std::size_t GetIndexFromAruid(u64 aruid) const;
+
+ Result ApplyNpadSystemCommonPolicy(u64 aruid, bool is_full_policy);
+ Result ClearNpadSystemCommonPolicy(u64 aruid);
+
+ Result SetSupportedNpadStyleSet(u64 aruid, Core::HID::NpadStyleSet style_set);
+ Result GetSupportedNpadStyleSet(Core::HID::NpadStyleSet& out_style_Set, u64 aruid) const;
+ Result GetMaskedSupportedNpadStyleSet(Core::HID::NpadStyleSet& out_style_set, u64 aruid) const;
+ Result GetAvailableStyleset(Core::HID::NpadStyleSet& out_style_set, u64 aruid) const;
+
+ NpadRevision GetNpadRevision(u64 aruid) const;
+ void SetNpadRevision(u64 aruid, NpadRevision revision);
+
+ Result IsSupportedNpadStyleSet(bool& is_set, u64 aruid);
+
+ Result SetNpadJoyHoldType(u64 aruid, NpadJoyHoldType hold_type);
+ Result GetNpadJoyHoldType(NpadJoyHoldType& hold_type, u64 aruid) const;
+
+ Result SetNpadHandheldActivationMode(u64 aruid, NpadHandheldActivationMode activation_mode);
+ Result GetNpadHandheldActivationMode(NpadHandheldActivationMode& activation_mode,
+ u64 aruid) const;
+
+ Result SetSupportedNpadIdType(u64 aruid,
+ std::span<const Core::HID::NpadIdType> supported_npad_list);
+ bool IsControllerSupported(u64 aruid, Core::HID::NpadStyleIndex style_index) const;
+
+ Result SetLrAssignmentMode(u64 aruid, bool is_enabled);
+ Result GetLrAssignmentMode(bool& is_enabled, u64 aruid) const;
+
+ Result SetAssigningSingleOnSlSrPress(u64 aruid, bool is_enabled);
+ Result IsAssigningSingleOnSlSrPressEnabled(bool& is_enabled, u64 aruid) const;
+
+ Result AcquireNpadStyleSetUpdateEventHandle(u64 aruid, Kernel::KReadableEvent** out_event,
+ Core::HID::NpadIdType npad_id);
+ Result SignalStyleSetUpdateEvent(u64 aruid, Core::HID::NpadIdType npad_id);
+
+ Result GetHomeProtectionEnabled(bool& is_enabled, u64 aruid,
+ Core::HID::NpadIdType npad_id) const;
+ Result SetHomeProtectionEnabled(u64 aruid, Core::HID::NpadIdType npad_id, bool is_enabled);
+
+ Result SetNpadAnalogStickUseCenterClamp(u64 aruid, bool is_enabled);
+
+ Result SetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id, std::size_t index,
+ Core::HID::NpadButton button_config);
+ Core::HID::NpadButton GetButtonConfig(u64 aruid, Core::HID::NpadIdType npad_id,
+ std::size_t index, Core::HID::NpadButton mask,
+ bool is_enabled);
+ void ResetButtonConfig();
+
+ Result SetNpadCaptureButtonAssignment(u64 aruid, Core::HID::NpadStyleSet npad_style_set,
+ Core::HID::NpadButton button_assignment);
+ Result ClearNpadCaptureButtonAssignment(u64 aruid);
+ std::size_t GetNpadCaptureButtonAssignment(std::span<Core::HID::NpadButton> out_list,
+ u64 aruid) const;
+
+ Result SetNpadSystemExtStateEnabled(u64 aruid, bool is_enabled);
+
+private:
+ NPadData active_data{};
+ AruidRegisterList registration_list{};
+ std::array<NpadState, AruidIndexMax> state{};
+ u64 active_data_aruid{};
+ NpadJoyHoldType default_hold_type{};
+ s32 ref_counter{};
+
+ KernelHelpers::ServiceContext& service_context;
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/shared_memory_holder.cpp b/src/core/hle/service/hid/controllers/shared_memory_holder.cpp
index 51581188e..0bc5169c6 100644
--- a/src/core/hle/service/hid/controllers/shared_memory_holder.cpp
+++ b/src/core/hle/service/hid/controllers/shared_memory_holder.cpp
@@ -3,8 +3,9 @@
#include "core/core.h"
#include "core/hle/kernel/k_shared_memory.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/shared_memory_holder.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
#include "core/hle/service/hid/errors.h"
namespace Service::HID {
diff --git a/src/core/hle/service/hid/controllers/six_axis.cpp b/src/core/hle/service/hid/controllers/six_axis.cpp
index 36b72f9ea..adab60911 100644
--- a/src/core/hle/service/hid/controllers/six_axis.cpp
+++ b/src/core/hle/service/hid/controllers/six_axis.cpp
@@ -6,8 +6,8 @@
#include "core/hid/emulated_controller.h"
#include "core/hid/hid_core.h"
#include "core/hle/service/hid/controllers/npad.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
#include "core/hle/service/hid/controllers/six_axis.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
#include "core/hle/service/hid/errors.h"
#include "core/hle/service/hid/hid_util.h"
@@ -27,14 +27,21 @@ void SixAxis::OnInit() {}
void SixAxis::OnRelease() {}
void SixAxis::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
if (!IsControllerActivated()) {
return;
}
for (std::size_t i = 0; i < controller_data.size(); ++i) {
+ NpadSharedMemoryEntry& shared_memory = data->shared_memory_format->npad.npad_entry[i];
auto& controller = controller_data[i];
-
- const auto npad_id = IndexToNpadIdType(i);
const auto& controller_type = controller.device->GetNpadStyleIndex();
if (controller_type == Core::HID::NpadStyleIndex::None ||
@@ -50,12 +57,12 @@ void SixAxis::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
auto& sixaxis_left_lifo_state = controller.sixaxis_left_lifo_state;
auto& sixaxis_right_lifo_state = controller.sixaxis_right_lifo_state;
- auto& sixaxis_fullkey_lifo = npad->GetSixAxisFullkeyLifo(npad_id);
- auto& sixaxis_handheld_lifo = npad->GetSixAxisHandheldLifo(npad_id);
- auto& sixaxis_dual_left_lifo = npad->GetSixAxisDualLeftLifo(npad_id);
- auto& sixaxis_dual_right_lifo = npad->GetSixAxisDualRightLifo(npad_id);
- auto& sixaxis_left_lifo = npad->GetSixAxisLeftLifo(npad_id);
- auto& sixaxis_right_lifo = npad->GetSixAxisRightLifo(npad_id);
+ auto& sixaxis_fullkey_lifo = shared_memory.internal_state.sixaxis_fullkey_lifo;
+ auto& sixaxis_handheld_lifo = shared_memory.internal_state.sixaxis_handheld_lifo;
+ auto& sixaxis_dual_left_lifo = shared_memory.internal_state.sixaxis_dual_left_lifo;
+ auto& sixaxis_dual_right_lifo = shared_memory.internal_state.sixaxis_dual_right_lifo;
+ auto& sixaxis_left_lifo = shared_memory.internal_state.sixaxis_left_lifo;
+ auto& sixaxis_right_lifo = shared_memory.internal_state.sixaxis_right_lifo;
// Clear previous state
sixaxis_fullkey_state = {};
diff --git a/src/core/hle/service/hid/controllers/sleep_button.cpp b/src/core/hle/service/hid/controllers/sleep_button.cpp
new file mode 100644
index 000000000..d44b1f4cc
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/sleep_button.cpp
@@ -0,0 +1,39 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/sleep_button.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+
+namespace Service::HID {
+
+SleepButton::SleepButton(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {}
+
+SleepButton::~SleepButton() = default;
+
+void SleepButton::OnInit() {}
+
+void SleepButton::OnRelease() {}
+
+void SleepButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ if (!smart_update) {
+ return;
+ }
+
+ std::scoped_lock shared_lock{*shared_mutex};
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ auto& header = data->shared_memory_format->capture_button.header;
+ header.timestamp = core_timing.GetGlobalTimeNs().count();
+ header.total_entry_count = 17;
+ header.entry_count = 0;
+ header.last_entry_index = 0;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/sleep_button.h b/src/core/hle/service/hid/controllers/sleep_button.h
new file mode 100644
index 000000000..59964bf63
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/sleep_button.h
@@ -0,0 +1,27 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/hid/controllers/controller_base.h"
+
+namespace Service::HID {
+
+class SleepButton final : public ControllerBase {
+public:
+ explicit SleepButton(Core::HID::HIDCore& hid_core_);
+ ~SleepButton() override;
+
+ // Called when the controller is initialized
+ void OnInit() override;
+
+ // When the controller is released
+ void OnRelease() override;
+
+ // When the controller is requesting an update for the shared memory
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+
+private:
+ bool smart_update{};
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/stubbed.cpp b/src/core/hle/service/hid/controllers/stubbed.cpp
deleted file mode 100644
index e2a5f5d79..000000000
--- a/src/core/hle/service/hid/controllers/stubbed.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "core/core_timing.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
-#include "core/hle/service/hid/controllers/stubbed.h"
-
-namespace Service::HID {
-
-Controller_Stubbed::Controller_Stubbed(Core::HID::HIDCore& hid_core_,
- CommonHeader& ring_lifo_header)
- : ControllerBase{hid_core_}, header{ring_lifo_header} {}
-
-Controller_Stubbed::~Controller_Stubbed() = default;
-
-void Controller_Stubbed::OnInit() {}
-
-void Controller_Stubbed::OnRelease() {}
-
-void Controller_Stubbed::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
- if (!smart_update) {
- return;
- }
-
- header.timestamp = core_timing.GetGlobalTimeNs().count();
- header.total_entry_count = 17;
- header.entry_count = 0;
- header.last_entry_index = 0;
-}
-
-} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp
index 469750006..b585a5829 100644
--- a/src/core/hle/service/hid/controllers/touchscreen.cpp
+++ b/src/core/hle/service/hid/controllers/touchscreen.cpp
@@ -8,15 +8,14 @@
#include "core/frontend/emu_window.h"
#include "core/hid/emulated_console.h"
#include "core/hid/hid_core.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
#include "core/hle/service/hid/controllers/touchscreen.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
namespace Service::HID {
-TouchScreen::TouchScreen(Core::HID::HIDCore& hid_core_,
- TouchScreenSharedMemoryFormat& touch_shared_memory)
- : ControllerBase{hid_core_}, shared_memory{touch_shared_memory},
- touchscreen_width(Layout::ScreenUndocked::Width),
+TouchScreen::TouchScreen(Core::HID::HIDCore& hid_core_)
+ : ControllerBase{hid_core_}, touchscreen_width(Layout::ScreenUndocked::Width),
touchscreen_height(Layout::ScreenUndocked::Height) {
console = hid_core.GetEmulatedConsole();
}
@@ -28,6 +27,14 @@ void TouchScreen::OnInit() {}
void TouchScreen::OnRelease() {}
void TouchScreen::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ TouchScreenSharedMemoryFormat& shared_memory = data->shared_memory_format->touch_screen;
shared_memory.touch_screen_lifo.timestamp = core_timing.GetGlobalTimeNs().count();
if (!IsControllerActivated()) {
diff --git a/src/core/hle/service/hid/controllers/touchscreen.h b/src/core/hle/service/hid/controllers/touchscreen.h
index 5b6305bfc..945d359be 100644
--- a/src/core/hle/service/hid/controllers/touchscreen.h
+++ b/src/core/hle/service/hid/controllers/touchscreen.h
@@ -18,8 +18,7 @@ struct TouchScreenSharedMemoryFormat;
class TouchScreen final : public ControllerBase {
public:
- explicit TouchScreen(Core::HID::HIDCore& hid_core_,
- TouchScreenSharedMemoryFormat& touch_shared_memory);
+ explicit TouchScreen(Core::HID::HIDCore& hid_core_);
~TouchScreen() override;
// Called when the controller is initialized
@@ -35,7 +34,6 @@ public:
private:
TouchScreenState next_state{};
- TouchScreenSharedMemoryFormat& shared_memory;
Core::HID::EmulatedConsole* console = nullptr;
std::array<Core::HID::TouchFinger, MAX_FINGERS> fingers{};
diff --git a/src/core/hle/service/hid/controllers/types/npad_types.h b/src/core/hle/service/hid/controllers/types/npad_types.h
index a5ce2562b..419c33a8c 100644
--- a/src/core/hle/service/hid/controllers/types/npad_types.h
+++ b/src/core/hle/service/hid/controllers/types/npad_types.h
@@ -9,7 +9,8 @@
#include "core/hid/hid_types.h"
namespace Service::HID {
-static constexpr std::size_t NpadCount = 10;
+static constexpr std::size_t MaxSupportedNpadIdTypes = 10;
+static constexpr std::size_t StyleIndexCount = 7;
// This is nn::hid::NpadJoyHoldType
enum class NpadJoyHoldType : u64 {
diff --git a/src/core/hle/service/hid/controllers/shared_memory_format.h b/src/core/hle/service/hid/controllers/types/shared_memory_format.h
index 2986c113e..976043b9c 100644
--- a/src/core/hle/service/hid/controllers/shared_memory_format.h
+++ b/src/core/hle/service/hid/controllers/types/shared_memory_format.h
@@ -171,7 +171,7 @@ static_assert(sizeof(NpadSharedMemoryEntry) == 0x5000, "NpadSharedMemoryEntry is
// This is nn::hid::detail::NpadSharedMemoryFormat
struct NpadSharedMemoryFormat {
- std::array<NpadSharedMemoryEntry, NpadCount> npad_entry;
+ std::array<NpadSharedMemoryEntry, MaxSupportedNpadIdTypes> npad_entry;
};
static_assert(sizeof(NpadSharedMemoryFormat) == 0x32000,
"NpadSharedMemoryFormat is an invalid size");
diff --git a/src/core/hle/service/hid/controllers/unique_pad.cpp b/src/core/hle/service/hid/controllers/unique_pad.cpp
new file mode 100644
index 000000000..6c543031d
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/unique_pad.cpp
@@ -0,0 +1,38 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/core_timing.h"
+#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/unique_pad.h"
+
+namespace Service::HID {
+
+UniquePad::UniquePad(Core::HID::HIDCore& hid_core_) : ControllerBase{hid_core_} {}
+
+UniquePad::~UniquePad() = default;
+
+void UniquePad::OnInit() {}
+
+void UniquePad::OnRelease() {}
+
+void UniquePad::OnUpdate(const Core::Timing::CoreTiming& core_timing) {
+ if (!smart_update) {
+ return;
+ }
+
+ const u64 aruid = applet_resource->GetActiveAruid();
+ auto* data = applet_resource->GetAruidData(aruid);
+
+ if (data == nullptr || !data->flag.is_assigned) {
+ return;
+ }
+
+ auto& header = data->shared_memory_format->capture_button.header;
+ header.timestamp = core_timing.GetGlobalTimeNs().count();
+ header.total_entry_count = 17;
+ header.entry_count = 0;
+ header.last_entry_index = 0;
+}
+
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/controllers/unique_pad.h b/src/core/hle/service/hid/controllers/unique_pad.h
new file mode 100644
index 000000000..966368264
--- /dev/null
+++ b/src/core/hle/service/hid/controllers/unique_pad.h
@@ -0,0 +1,27 @@
+// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/hid/controllers/controller_base.h"
+
+namespace Service::HID {
+
+class UniquePad final : public ControllerBase {
+public:
+ explicit UniquePad(Core::HID::HIDCore& hid_core_);
+ ~UniquePad() override;
+
+ // Called when the controller is initialized
+ void OnInit() override;
+
+ // When the controller is released
+ void OnRelease() override;
+
+ // When the controller is requesting an update for the shared memory
+ void OnUpdate(const Core::Timing::CoreTiming& core_timing) override;
+
+private:
+ bool smart_update{};
+};
+} // namespace Service::HID
diff --git a/src/core/hle/service/hid/errors.h b/src/core/hle/service/hid/errors.h
index 6dc976fe1..bb14aa61e 100644
--- a/src/core/hle/service/hid/errors.h
+++ b/src/core/hle/service/hid/errors.h
@@ -10,15 +10,32 @@ namespace Service::HID {
constexpr Result PalmaResultSuccess{ErrorModule::HID, 0};
constexpr Result NpadInvalidHandle{ErrorModule::HID, 100};
constexpr Result NpadDeviceIndexOutOfRange{ErrorModule::HID, 107};
-constexpr Result VibrationInvalidStyleIndex{ErrorModule::HID, 122};
-constexpr Result VibrationInvalidNpadId{ErrorModule::HID, 123};
-constexpr Result VibrationDeviceIndexOutOfRange{ErrorModule::HID, 124};
+
+constexpr Result ResultVibrationNotInitialized{ErrorModule::HID, 121};
+constexpr Result ResultVibrationInvalidStyleIndex{ErrorModule::HID, 122};
+constexpr Result ResultVibrationInvalidNpadId{ErrorModule::HID, 123};
+constexpr Result ResultVibrationDeviceIndexOutOfRange{ErrorModule::HID, 124};
+constexpr Result ResultVibrationStrenghtOutOfRange{ErrorModule::HID, 126};
+constexpr Result ResultVibrationArraySizeMismatch{ErrorModule::HID, 131};
+
constexpr Result InvalidSixAxisFusionRange{ErrorModule::HID, 423};
+
+constexpr Result ResultNfcIsNotReady{ErrorModule::HID, 461};
+constexpr Result ResultNfcXcdHandleIsNotInitialized{ErrorModule::HID, 464};
+constexpr Result ResultIrSensorIsNotReady{ErrorModule::HID, 501};
+constexpr Result ResultMcuIsNotReady{ErrorModule::HID, 541};
+
constexpr Result NpadIsDualJoycon{ErrorModule::HID, 601};
constexpr Result NpadIsSameType{ErrorModule::HID, 602};
-constexpr Result InvalidNpadId{ErrorModule::HID, 709};
-constexpr Result NpadNotConnected{ErrorModule::HID, 710};
-constexpr Result InvalidArraySize{ErrorModule::HID, 715};
+constexpr Result ResultNpadIsNotProController{ErrorModule::HID, 604};
+
+constexpr Result ResultInvalidNpadId{ErrorModule::HID, 709};
+constexpr Result ResultNpadNotConnected{ErrorModule::HID, 710};
+constexpr Result ResultNpadHandlerOverflow{ErrorModule::HID, 711};
+constexpr Result ResultNpadHandlerNotInitialized{ErrorModule::HID, 712};
+constexpr Result ResultInvalidArraySize{ErrorModule::HID, 715};
+constexpr Result ResultUndefinedStyleset{ErrorModule::HID, 716};
+constexpr Result ResultMultipleStyleSetSelected{ErrorModule::HID, 717};
constexpr Result ResultAppletResourceOverflow{ErrorModule::HID, 1041};
constexpr Result ResultAppletResourceNotInitialized{ErrorModule::HID, 1042};
@@ -27,6 +44,9 @@ constexpr Result ResultAruidNoAvailableEntries{ErrorModule::HID, 1044};
constexpr Result ResultAruidAlreadyRegistered{ErrorModule::HID, 1046};
constexpr Result ResultAruidNotRegistered{ErrorModule::HID, 1047};
+constexpr Result ResultNpadResourceOverflow{ErrorModule::HID, 2001};
+constexpr Result ResultNpadResourceNotInitialized{ErrorModule::HID, 2002};
+
constexpr Result InvalidPalmaHandle{ErrorModule::HID, 3302};
} // namespace Service::HID
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index afbcb019f..bd2873181 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -25,6 +25,7 @@ void LoopProcess(Core::System& system) {
// TODO: Remove this hack until this service is emulated properly.
const auto process_list = system.Kernel().GetProcessList();
if (!process_list.empty()) {
+ resouce_manager->Initialize();
resouce_manager->RegisterAppletResourceUserId(process_list[0]->GetId(), true);
}
diff --git a/src/core/hle/service/hid/hid_server.cpp b/src/core/hle/service/hid/hid_server.cpp
index de24b0401..a953c92b3 100644
--- a/src/core/hle/service/hid/hid_server.cpp
+++ b/src/core/hle/service/hid/hid_server.cpp
@@ -51,7 +51,7 @@ private:
IPC::RequestParser rp{ctx};
const auto vibration_device_handle{rp.PopRaw<Core::HID::VibrationDeviceHandle>()};
- if (resource_manager != nullptr) {
+ if (resource_manager != nullptr && resource_manager->GetNpad()) {
resource_manager->GetNpad()->InitializeVibrationDevice(vibration_device_handle);
}
@@ -785,8 +785,8 @@ void IHidServer::IsFirmwareUpdateAvailableForSixAxisSensor(HLERequestContext& ct
bool is_firmware_available{};
auto controller = GetResourceManager()->GetNpad();
- controller->IsFirmwareUpdateAvailableForSixAxisSensor(parameters.sixaxis_handle,
- is_firmware_available);
+ controller->IsFirmwareUpdateAvailableForSixAxisSensor(
+ parameters.applet_resource_user_id, parameters.sixaxis_handle, is_firmware_available);
LOG_WARNING(
Service_HID,
@@ -924,8 +924,8 @@ void IHidServer::ResetIsSixAxisSensorDeviceNewlyAssigned(HLERequestContext& ctx)
const auto parameters{rp.PopRaw<Parameters>()};
auto controller = GetResourceManager()->GetNpad();
- const auto result =
- controller->ResetIsSixAxisSensorDeviceNewlyAssigned(parameters.sixaxis_handle);
+ const auto result = controller->ResetIsSixAxisSensorDeviceNewlyAssigned(
+ parameters.applet_resource_user_id, parameters.sixaxis_handle);
LOG_WARNING(
Service_HID,
@@ -970,7 +970,7 @@ void IHidServer::ActivateGesture(HLERequestContext& ctx) {
void IHidServer::SetSupportedNpadStyleSet(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
struct Parameters {
- Core::HID::NpadStyleSet supported_styleset;
+ Core::HID::NpadStyleSet supported_style_set;
INSERT_PADDING_WORDS_NOINIT(1);
u64 applet_resource_user_id;
};
@@ -978,13 +978,25 @@ void IHidServer::SetSupportedNpadStyleSet(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
- GetResourceManager()->GetNpad()->SetSupportedStyleSet({parameters.supported_styleset});
+ LOG_DEBUG(Service_HID, "called, supported_style_set={}, applet_resource_user_id={}",
+ parameters.supported_style_set, parameters.applet_resource_user_id);
+
+ const auto npad = GetResourceManager()->GetNpad();
+ const Result result = npad->SetSupportedNpadStyleSet(parameters.applet_resource_user_id,
+ parameters.supported_style_set);
- LOG_DEBUG(Service_HID, "called, supported_styleset={}, applet_resource_user_id={}",
- parameters.supported_styleset, parameters.applet_resource_user_id);
+ if (result.IsSuccess()) {
+ Core::HID::NpadStyleTag style_tag{parameters.supported_style_set};
+ const auto revision = npad->GetRevision(parameters.applet_resource_user_id);
+
+ if (style_tag.palma != 0 && revision < NpadRevision::Revision3) {
+ // GetResourceManager()->GetPalma()->EnableBoostMode(parameters.applet_resource_user_id,
+ // true);
+ }
+ }
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
}
void IHidServer::GetSupportedNpadStyleSet(HLERequestContext& ctx) {
@@ -993,19 +1005,31 @@ void IHidServer::GetSupportedNpadStyleSet(HLERequestContext& ctx) {
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ Core::HID::NpadStyleSet supported_style_set{};
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result =
+ npad->GetSupportedNpadStyleSet(applet_resource_user_id, supported_style_set);
+
IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.PushEnum(GetResourceManager()->GetNpad()->GetSupportedStyleSet().raw);
+ rb.Push(result);
+ rb.PushEnum(supported_style_set);
}
void IHidServer::SetSupportedNpadIdType(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
-
- const auto result = GetResourceManager()->GetNpad()->SetSupportedNpadIdTypes(ctx.ReadBuffer());
+ const auto buffer = ctx.ReadBuffer();
+ const std::size_t elements = ctx.GetReadBufferNumElements<Core::HID::NpadIdType>();
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ std::vector<Core::HID::NpadIdType> supported_npad_list(elements);
+ memcpy(supported_npad_list.data(), buffer.data(), buffer.size());
+
+ const auto npad = GetResourceManager()->GetNpad();
+ const Result result =
+ npad->SetSupportedNpadIdType(applet_resource_user_id, supported_npad_list);
+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
@@ -1018,7 +1042,7 @@ void IHidServer::ActivateNpad(HLERequestContext& ctx) {
auto npad = GetResourceManager()->GetNpad();
- // TODO: npad->SetRevision(applet_resource_user_id, NpadRevision::Revision0);
+ npad->SetRevision(applet_resource_user_id, NpadRevision::Revision0);
const Result result = npad->Activate(applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
@@ -1052,13 +1076,13 @@ void IHidServer::AcquireNpadStyleSetUpdateEventHandle(HLERequestContext& ctx) {
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}, unknown={}",
parameters.npad_id, parameters.applet_resource_user_id, parameters.unknown);
- // Games expect this event to be signaled after calling this function
- GetResourceManager()->GetNpad()->SignalStyleSetChangedEvent(parameters.npad_id);
+ Kernel::KReadableEvent* style_set_update_event;
+ const auto result = GetResourceManager()->GetNpad()->AcquireNpadStyleSetUpdateEventHandle(
+ parameters.applet_resource_user_id, &style_set_update_event, parameters.npad_id);
IPC::ResponseBuilder rb{ctx, 2, 1};
- rb.Push(ResultSuccess);
- rb.PushCopyObjects(
- GetResourceManager()->GetNpad()->GetStyleSetChangedEvent(parameters.npad_id));
+ rb.Push(result);
+ rb.PushCopyObjects(style_set_update_event);
}
void IHidServer::DisconnectNpad(HLERequestContext& ctx) {
@@ -1073,7 +1097,7 @@ void IHidServer::DisconnectNpad(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
auto controller = GetResourceManager()->GetNpad();
- controller->DisconnectNpad(parameters.npad_id);
+ controller->DisconnectNpad(parameters.applet_resource_user_id, parameters.npad_id);
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", parameters.npad_id,
parameters.applet_resource_user_id);
@@ -1113,7 +1137,7 @@ void IHidServer::ActivateNpadWithRevision(HLERequestContext& ctx) {
auto npad = GetResourceManager()->GetNpad();
- // TODO: npad->SetRevision(applet_resource_user_id, revision);
+ npad->SetRevision(parameters.applet_resource_user_id, parameters.revision);
const auto result = npad->Activate(parameters.applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
@@ -1125,13 +1149,19 @@ void IHidServer::SetNpadJoyHoldType(HLERequestContext& ctx) {
const auto applet_resource_user_id{rp.Pop<u64>()};
const auto hold_type{rp.PopEnum<NpadJoyHoldType>()};
- GetResourceManager()->GetNpad()->SetHoldType(hold_type);
-
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, hold_type={}",
applet_resource_user_id, hold_type);
+ if (hold_type != NpadJoyHoldType::Horizontal && hold_type != NpadJoyHoldType::Vertical) {
+ // This should crash console
+ ASSERT_MSG(false, "Invalid npad joy hold type");
+ }
+
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result = npad->SetNpadJoyHoldType(applet_resource_user_id, hold_type);
+
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
}
void IHidServer::GetNpadJoyHoldType(HLERequestContext& ctx) {
@@ -1140,9 +1170,13 @@ void IHidServer::GetNpadJoyHoldType(HLERequestContext& ctx) {
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ NpadJoyHoldType hold_type{};
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result = npad->GetNpadJoyHoldType(applet_resource_user_id, hold_type);
+
IPC::ResponseBuilder rb{ctx, 4};
- rb.Push(ResultSuccess);
- rb.PushEnum(GetResourceManager()->GetNpad()->GetHoldType());
+ rb.Push(result);
+ rb.PushEnum(hold_type);
}
void IHidServer::SetNpadJoyAssignmentModeSingleByDefault(HLERequestContext& ctx) {
@@ -1158,8 +1192,8 @@ void IHidServer::SetNpadJoyAssignmentModeSingleByDefault(HLERequestContext& ctx)
Core::HID::NpadIdType new_npad_id{};
auto controller = GetResourceManager()->GetNpad();
- controller->SetNpadMode(new_npad_id, parameters.npad_id, NpadJoyDeviceType::Left,
- NpadJoyAssignmentMode::Single);
+ controller->SetNpadMode(parameters.applet_resource_user_id, new_npad_id, parameters.npad_id,
+ NpadJoyDeviceType::Left, NpadJoyAssignmentMode::Single);
LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}", parameters.npad_id,
parameters.applet_resource_user_id);
@@ -1182,8 +1216,8 @@ void IHidServer::SetNpadJoyAssignmentModeSingle(HLERequestContext& ctx) {
Core::HID::NpadIdType new_npad_id{};
auto controller = GetResourceManager()->GetNpad();
- controller->SetNpadMode(new_npad_id, parameters.npad_id, parameters.npad_joy_device_type,
- NpadJoyAssignmentMode::Single);
+ controller->SetNpadMode(parameters.applet_resource_user_id, new_npad_id, parameters.npad_id,
+ parameters.npad_joy_device_type, NpadJoyAssignmentMode::Single);
LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
parameters.npad_id, parameters.applet_resource_user_id,
@@ -1206,7 +1240,8 @@ void IHidServer::SetNpadJoyAssignmentModeDual(HLERequestContext& ctx) {
Core::HID::NpadIdType new_npad_id{};
auto controller = GetResourceManager()->GetNpad();
- controller->SetNpadMode(new_npad_id, parameters.npad_id, {}, NpadJoyAssignmentMode::Dual);
+ controller->SetNpadMode(parameters.applet_resource_user_id, new_npad_id, parameters.npad_id, {},
+ NpadJoyAssignmentMode::Dual);
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", parameters.npad_id,
parameters.applet_resource_user_id); // Spams a lot when controller applet is open
@@ -1222,7 +1257,8 @@ void IHidServer::MergeSingleJoyAsDualJoy(HLERequestContext& ctx) {
const auto applet_resource_user_id{rp.Pop<u64>()};
auto controller = GetResourceManager()->GetNpad();
- const auto result = controller->MergeSingleJoyAsDualJoy(npad_id_1, npad_id_2);
+ const auto result =
+ controller->MergeSingleJoyAsDualJoy(applet_resource_user_id, npad_id_1, npad_id_2);
LOG_DEBUG(Service_HID, "called, npad_id_1={}, npad_id_2={}, applet_resource_user_id={}",
npad_id_1, npad_id_2, applet_resource_user_id);
@@ -1235,10 +1271,10 @@ void IHidServer::StartLrAssignmentMode(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
- GetResourceManager()->GetNpad()->StartLRAssignmentMode();
-
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ GetResourceManager()->GetNpad()->StartLrAssignmentMode(applet_resource_user_id);
+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
@@ -1247,10 +1283,10 @@ void IHidServer::StopLrAssignmentMode(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
- GetResourceManager()->GetNpad()->StopLRAssignmentMode();
-
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ GetResourceManager()->GetNpad()->StopLrAssignmentMode(applet_resource_user_id);
+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
@@ -1260,13 +1296,23 @@ void IHidServer::SetNpadHandheldActivationMode(HLERequestContext& ctx) {
const auto applet_resource_user_id{rp.Pop<u64>()};
const auto activation_mode{rp.PopEnum<NpadHandheldActivationMode>()};
- GetResourceManager()->GetNpad()->SetNpadHandheldActivationMode(activation_mode);
-
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, activation_mode={}",
applet_resource_user_id, activation_mode);
+ if (activation_mode >= NpadHandheldActivationMode::MaxActivationMode) {
+ // Console should crash here
+ ASSERT_MSG(false, "Activation mode should be always None, Single or Dual");
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+ return;
+ }
+
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result =
+ npad->SetNpadHandheldActivationMode(applet_resource_user_id, activation_mode);
+
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
}
void IHidServer::GetNpadHandheldActivationMode(HLERequestContext& ctx) {
@@ -1275,9 +1321,14 @@ void IHidServer::GetNpadHandheldActivationMode(HLERequestContext& ctx) {
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+ NpadHandheldActivationMode activation_mode{};
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result =
+ npad->GetNpadHandheldActivationMode(applet_resource_user_id, activation_mode);
+
IPC::ResponseBuilder rb{ctx, 4};
- rb.Push(ResultSuccess);
- rb.PushEnum(GetResourceManager()->GetNpad()->GetNpadHandheldActivationMode());
+ rb.Push(result);
+ rb.PushEnum(activation_mode);
}
void IHidServer::SwapNpadAssignment(HLERequestContext& ctx) {
@@ -1286,12 +1337,12 @@ void IHidServer::SwapNpadAssignment(HLERequestContext& ctx) {
const auto npad_id_2{rp.PopEnum<Core::HID::NpadIdType>()};
const auto applet_resource_user_id{rp.Pop<u64>()};
- auto controller = GetResourceManager()->GetNpad();
- const auto result = controller->SwapNpadAssignment(npad_id_1, npad_id_2);
-
LOG_DEBUG(Service_HID, "called, npad_id_1={}, npad_id_2={}, applet_resource_user_id={}",
npad_id_1, npad_id_2, applet_resource_user_id);
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result = npad->SwapNpadAssignment(applet_resource_user_id, npad_id_1, npad_id_2);
+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
@@ -1307,13 +1358,19 @@ void IHidServer::IsUnintendedHomeButtonInputProtectionEnabled(HLERequestContext&
const auto parameters{rp.PopRaw<Parameters>()};
- bool is_enabled = false;
- auto controller = GetResourceManager()->GetNpad();
- const auto result =
- controller->IsUnintendedHomeButtonInputProtectionEnabled(parameters.npad_id, is_enabled);
+ LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}", parameters.npad_id,
+ parameters.applet_resource_user_id);
- LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}",
- parameters.npad_id, parameters.applet_resource_user_id);
+ if (!IsNpadIdValid(parameters.npad_id)) {
+ IPC::ResponseBuilder rb{ctx, 3};
+ rb.Push(ResultInvalidNpadId);
+ return;
+ }
+
+ bool is_enabled{};
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result = npad->IsUnintendedHomeButtonInputProtectionEnabled(
+ is_enabled, parameters.applet_resource_user_id, parameters.npad_id);
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(result);
@@ -1332,13 +1389,18 @@ void IHidServer::EnableUnintendedHomeButtonInputProtection(HLERequestContext& ct
const auto parameters{rp.PopRaw<Parameters>()};
- auto controller = GetResourceManager()->GetNpad();
- const auto result = controller->SetUnintendedHomeButtonInputProtectionEnabled(
- parameters.is_enabled, parameters.npad_id);
+ LOG_INFO(Service_HID, "called, is_enabled={}, npad_id={}, applet_resource_user_id={}",
+ parameters.is_enabled, parameters.npad_id, parameters.applet_resource_user_id);
- LOG_DEBUG(Service_HID,
- "(STUBBED) called, is_enabled={}, npad_id={}, applet_resource_user_id={}",
- parameters.is_enabled, parameters.npad_id, parameters.applet_resource_user_id);
+ if (!IsNpadIdValid(parameters.npad_id)) {
+ IPC::ResponseBuilder rb{ctx, 3};
+ rb.Push(ResultInvalidNpadId);
+ return;
+ }
+
+ const auto npad = GetResourceManager()->GetNpad();
+ const auto result = npad->EnableUnintendedHomeButtonInputProtection(
+ parameters.applet_resource_user_id, parameters.npad_id, parameters.is_enabled);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@@ -1359,8 +1421,8 @@ void IHidServer::SetNpadJoyAssignmentModeSingleWithDestination(HLERequestContext
Core::HID::NpadIdType new_npad_id{};
auto controller = GetResourceManager()->GetNpad();
const auto is_reassigned =
- controller->SetNpadMode(new_npad_id, parameters.npad_id, parameters.npad_joy_device_type,
- NpadJoyAssignmentMode::Single);
+ controller->SetNpadMode(parameters.applet_resource_user_id, new_npad_id, parameters.npad_id,
+ parameters.npad_joy_device_type, NpadJoyAssignmentMode::Single);
LOG_INFO(Service_HID, "called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
parameters.npad_id, parameters.applet_resource_user_id,
@@ -1375,7 +1437,7 @@ void IHidServer::SetNpadJoyAssignmentModeSingleWithDestination(HLERequestContext
void IHidServer::SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
struct Parameters {
- bool analog_stick_use_center_clamp;
+ bool use_center_clamp;
INSERT_PADDING_BYTES_NOINIT(7);
u64 applet_resource_user_id;
};
@@ -1383,12 +1445,11 @@ void IHidServer::SetNpadAnalogStickUseCenterClamp(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
- GetResourceManager()->GetNpad()->SetAnalogStickUseCenterClamp(
- parameters.analog_stick_use_center_clamp);
+ LOG_WARNING(Service_HID, "(STUBBED) called, use_center_clamp={}, applet_resource_user_id={}",
+ parameters.use_center_clamp, parameters.applet_resource_user_id);
- LOG_WARNING(Service_HID,
- "(STUBBED) called, analog_stick_use_center_clamp={}, applet_resource_user_id={}",
- parameters.analog_stick_use_center_clamp, parameters.applet_resource_user_id);
+ GetResourceManager()->GetNpad()->SetNpadAnalogStickUseCenterClamp(
+ parameters.applet_resource_user_id, parameters.use_center_clamp);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -1496,7 +1557,8 @@ void IHidServer::SendVibrationValue(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
- GetResourceManager()->GetNpad()->VibrateController(parameters.vibration_device_handle,
+ GetResourceManager()->GetNpad()->VibrateController(parameters.applet_resource_user_id,
+ parameters.vibration_device_handle,
parameters.vibration_value);
LOG_DEBUG(Service_HID,
@@ -1528,8 +1590,8 @@ void IHidServer::GetActualVibrationValue(HLERequestContext& ctx) {
IPC::ResponseBuilder rb{ctx, 6};
rb.Push(ResultSuccess);
- rb.PushRaw(
- GetResourceManager()->GetNpad()->GetLastVibration(parameters.vibration_device_handle));
+ rb.PushRaw(GetResourceManager()->GetNpad()->GetLastVibration(
+ parameters.applet_resource_user_id, parameters.vibration_device_handle));
}
void IHidServer::CreateActiveVibrationDeviceList(HLERequestContext& ctx) {
@@ -1580,7 +1642,8 @@ void IHidServer::SendVibrationValues(HLERequestContext& ctx) {
auto vibration_values = std::span(
reinterpret_cast<const Core::HID::VibrationValue*>(vibration_data.data()), vibration_count);
- GetResourceManager()->GetNpad()->VibrateControllers(vibration_device_handles, vibration_values);
+ GetResourceManager()->GetNpad()->VibrateControllers(applet_resource_user_id,
+ vibration_device_handles, vibration_values);
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
@@ -1634,8 +1697,8 @@ void IHidServer::SendVibrationGcErmCommand(HLERequestContext& ctx) {
}
}();
- GetResourceManager()->GetNpad()->VibrateController(parameters.vibration_device_handle,
- vibration_value);
+ GetResourceManager()->GetNpad()->VibrateController(
+ parameters.applet_resource_user_id, parameters.vibration_device_handle, vibration_value);
LOG_DEBUG(Service_HID,
"called, npad_type={}, npad_id={}, device_index={}, applet_resource_user_id={}, "
@@ -1659,8 +1722,8 @@ void IHidServer::GetActualVibrationGcErmCommand(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
- const auto last_vibration =
- GetResourceManager()->GetNpad()->GetLastVibration(parameters.vibration_device_handle);
+ const auto last_vibration = GetResourceManager()->GetNpad()->GetLastVibration(
+ parameters.applet_resource_user_id, parameters.vibration_device_handle);
const auto gc_erm_command = [last_vibration] {
if (last_vibration.low_amplitude != 0.0f || last_vibration.high_amplitude != 0.0f) {
@@ -1732,7 +1795,7 @@ void IHidServer::IsVibrationDeviceMounted(HLERequestContext& ctx) {
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
rb.Push(GetResourceManager()->GetNpad()->IsVibrationDeviceMounted(
- parameters.vibration_device_handle));
+ parameters.applet_resource_user_id, parameters.vibration_device_handle));
}
void IHidServer::ActivateConsoleSixAxisSensor(HLERequestContext& ctx) {
@@ -1850,8 +1913,7 @@ void IHidServer::InitializeSevenSixAxisSensor(HLERequestContext& ctx) {
ASSERT_MSG(t_mem_1_size == 0x1000, "t_mem_1_size is not 0x1000 bytes");
ASSERT_MSG(t_mem_2_size == 0x7F000, "t_mem_2_size is not 0x7F000 bytes");
- auto t_mem_1 = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_1_handle);
+ auto t_mem_1 = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_1_handle);
if (t_mem_1.IsNull()) {
LOG_ERROR(Service_HID, "t_mem_1 is a nullptr for handle=0x{:08X}", t_mem_1_handle);
@@ -1860,8 +1922,7 @@ void IHidServer::InitializeSevenSixAxisSensor(HLERequestContext& ctx) {
return;
}
- auto t_mem_2 = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_2_handle);
+ auto t_mem_2 = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_2_handle);
if (t_mem_2.IsNull()) {
LOG_ERROR(Service_HID, "t_mem_2 is a nullptr for handle=0x{:08X}", t_mem_2_handle);
@@ -2142,8 +2203,7 @@ void IHidServer::WritePalmaWaveEntry(HLERequestContext& ctx) {
ASSERT_MSG(t_mem_size == 0x3000, "t_mem_size is not 0x3000 bytes");
- auto t_mem = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_handle);
+ auto t_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_handle);
if (t_mem.IsNull()) {
LOG_ERROR(Service_HID, "t_mem is a nullptr for handle=0x{:08X}", t_mem_handle);
@@ -2318,10 +2378,10 @@ void IHidServer::SetNpadCommunicationMode(HLERequestContext& ctx) {
const auto applet_resource_user_id{rp.Pop<u64>()};
const auto communication_mode{rp.PopEnum<NpadCommunicationMode>()};
- GetResourceManager()->GetNpad()->SetNpadCommunicationMode(communication_mode);
+ LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, communication_mode={}",
+ applet_resource_user_id, communication_mode);
- LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}, communication_mode={}",
- applet_resource_user_id, communication_mode);
+ // This function has been stubbed since 2.0.0+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -2329,12 +2389,15 @@ void IHidServer::SetNpadCommunicationMode(HLERequestContext& ctx) {
void IHidServer::GetNpadCommunicationMode(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
+ const auto applet_resource_user_id{rp.Pop<u64>()};
- LOG_WARNING(Service_HID, "(STUBBED) called");
+ LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+
+ // This function has been stubbed since 2.0.0+
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(ResultSuccess);
- rb.PushEnum(GetResourceManager()->GetNpad()->GetNpadCommunicationMode());
+ rb.PushEnum(NpadCommunicationMode::Default);
}
void IHidServer::SetTouchScreenConfiguration(HLERequestContext& ctx) {
diff --git a/src/core/hle/service/hid/hid_system_server.cpp b/src/core/hle/service/hid/hid_system_server.cpp
index 5cc88c4a1..4823de743 100644
--- a/src/core/hle/service/hid/hid_system_server.cpp
+++ b/src/core/hle/service/hid/hid_system_server.cpp
@@ -240,9 +240,12 @@ IHidSystemServer::~IHidSystemServer() {
};
void IHidSystemServer::ApplyNpadSystemCommonPolicy(HLERequestContext& ctx) {
- LOG_WARNING(Service_HID, "called");
+ IPC::RequestParser rp{ctx};
+ const auto applet_resource_user_id{rp.Pop<u64>()};
+
+ LOG_INFO(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
- GetResourceManager()->GetNpad()->ApplyNpadSystemCommonPolicy();
+ GetResourceManager()->GetNpad()->ApplyNpadSystemCommonPolicy(applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -271,9 +274,12 @@ void IHidSystemServer::GetLastActiveNpad(HLERequestContext& ctx) {
}
void IHidSystemServer::ApplyNpadSystemCommonPolicyFull(HLERequestContext& ctx) {
- LOG_WARNING(Service_HID, "called");
+ IPC::RequestParser rp{ctx};
+ const auto applet_resource_user_id{rp.Pop<u64>()};
- GetResourceManager()->GetNpad()->ApplyNpadSystemCommonPolicy();
+ LOG_INFO(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
+
+ GetResourceManager()->GetNpad()->ApplyNpadSystemCommonPolicyFull(applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -298,28 +304,32 @@ void IHidSystemServer::GetNpadFullKeyGripColor(HLERequestContext& ctx) {
void IHidSystemServer::GetMaskedSupportedNpadStyleSet(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
+ const auto applet_resource_user_id{rp.Pop<u64>()};
- LOG_INFO(Service_HID, "(STUBBED) called");
+ LOG_INFO(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
- Core::HID::NpadStyleSet supported_styleset =
- GetResourceManager()->GetNpad()->GetSupportedStyleSet().raw;
+ Core::HID::NpadStyleSet supported_styleset{};
+ const auto& npad = GetResourceManager()->GetNpad();
+ const Result result =
+ npad->GetMaskedSupportedNpadStyleSet(applet_resource_user_id, supported_styleset);
IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
+ rb.Push(result);
rb.PushEnum(supported_styleset);
}
void IHidSystemServer::SetSupportedNpadStyleSetAll(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
+ const auto applet_resource_user_id{rp.Pop<u64>()};
- LOG_INFO(Service_HID, "(STUBBED) called");
+ LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
- Core::HID::NpadStyleSet supported_styleset =
- GetResourceManager()->GetNpad()->GetSupportedStyleSet().raw;
+ const auto& npad = GetResourceManager()->GetNpad();
+ const auto result =
+ npad->SetSupportedNpadStyleSet(applet_resource_user_id, Core::HID::NpadStyleSet::All);
- IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.PushEnum(supported_styleset);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(result);
}
void IHidSystemServer::GetAppletDetailedUiType(HLERequestContext& ctx) {
diff --git a/src/core/hle/service/hid/hid_util.h b/src/core/hle/service/hid/hid_util.h
index b87cc10e3..6a2ed287a 100644
--- a/src/core/hle/service/hid/hid_util.h
+++ b/src/core/hle/service/hid/hid_util.h
@@ -31,7 +31,7 @@ constexpr Result IsSixaxisHandleValid(const Core::HID::SixAxisSensorHandle& hand
const bool device_index = handle.device_index < Core::HID::DeviceIndex::MaxDeviceIndex;
if (!npad_id) {
- return InvalidNpadId;
+ return ResultInvalidNpadId;
}
if (!device_index) {
return NpadDeviceIndexOutOfRange;
@@ -54,15 +54,15 @@ constexpr Result IsVibrationHandleValid(const Core::HID::VibrationDeviceHandle&
// These support vibration
break;
default:
- return VibrationInvalidStyleIndex;
+ return ResultVibrationInvalidStyleIndex;
}
if (!IsNpadIdValid(static_cast<Core::HID::NpadIdType>(handle.npad_id))) {
- return VibrationInvalidNpadId;
+ return ResultVibrationInvalidNpadId;
}
if (handle.device_index >= Core::HID::DeviceIndex::MaxDeviceIndex) {
- return VibrationDeviceIndexOutOfRange;
+ return ResultVibrationDeviceIndexOutOfRange;
}
return ResultSuccess;
diff --git a/src/core/hle/service/hid/hidbus.cpp b/src/core/hle/service/hid/hidbus.cpp
index 80aac221b..ffa7e144d 100644
--- a/src/core/hle/service/hid/hidbus.cpp
+++ b/src/core/hle/service/hid/hidbus.cpp
@@ -49,10 +49,10 @@ HidBus::HidBus(Core::System& system_)
// Register update callbacks
hidbus_update_event = Core::Timing::CreateEvent(
"Hidbus::UpdateCallback",
- [this](std::uintptr_t user_data, s64 time,
+ [this](s64 time,
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto guard = LockService();
- UpdateHidbus(user_data, ns_late);
+ UpdateHidbus(ns_late);
return std::nullopt;
});
@@ -61,10 +61,10 @@ HidBus::HidBus(Core::System& system_)
}
HidBus::~HidBus() {
- system.CoreTiming().UnscheduleEvent(hidbus_update_event, 0);
+ system.CoreTiming().UnscheduleEvent(hidbus_update_event);
}
-void HidBus::UpdateHidbus(std::uintptr_t user_data, std::chrono::nanoseconds ns_late) {
+void HidBus::UpdateHidbus(std::chrono::nanoseconds ns_late) {
if (is_hidbus_enabled) {
for (std::size_t i = 0; i < devices.size(); ++i) {
if (!devices[i].is_device_initializated) {
@@ -448,8 +448,7 @@ void HidBus::EnableJoyPollingReceiveMode(HLERequestContext& ctx) {
ASSERT_MSG(t_mem_size == 0x1000, "t_mem_size is not 0x1000 bytes");
- auto t_mem = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_handle);
+ auto t_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_handle);
if (t_mem.IsNull()) {
LOG_ERROR(Service_HID, "t_mem is a nullptr for handle=0x{:08X}", t_mem_handle);
diff --git a/src/core/hle/service/hid/hidbus.h b/src/core/hle/service/hid/hidbus.h
index c29b5e882..85a1df133 100644
--- a/src/core/hle/service/hid/hidbus.h
+++ b/src/core/hle/service/hid/hidbus.h
@@ -108,7 +108,7 @@ private:
void DisableJoyPollingReceiveMode(HLERequestContext& ctx);
void SetStatusManagerType(HLERequestContext& ctx);
- void UpdateHidbus(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
+ void UpdateHidbus(std::chrono::nanoseconds ns_late);
std::optional<std::size_t> GetDeviceIndexFromHandle(BusHandle handle) const;
template <typename T>
diff --git a/src/core/hle/service/hid/irs.cpp b/src/core/hle/service/hid/irs.cpp
index 39b9a4474..05ed31273 100644
--- a/src/core/hle/service/hid/irs.cpp
+++ b/src/core/hle/service/hid/irs.cpp
@@ -197,8 +197,7 @@ void IRS::RunImageTransferProcessor(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
const auto t_mem_handle{ctx.GetCopyHandle(0)};
- auto t_mem = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_handle);
+ auto t_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_handle);
if (t_mem.IsNull()) {
LOG_ERROR(Service_IRS, "t_mem is a nullptr for handle=0x{:08X}", t_mem_handle);
@@ -316,7 +315,7 @@ void IRS::GetNpadIrCameraHandle(HLERequestContext& ctx) {
if (npad_id > Core::HID::NpadIdType::Player8 && npad_id != Core::HID::NpadIdType::Invalid &&
npad_id != Core::HID::NpadIdType::Handheld) {
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(Service::HID::InvalidNpadId);
+ rb.Push(Service::HID::ResultInvalidNpadId);
return;
}
@@ -444,8 +443,7 @@ void IRS::RunImageTransferExProcessor(HLERequestContext& ctx) {
const auto parameters{rp.PopRaw<Parameters>()};
const auto t_mem_handle{ctx.GetCopyHandle(0)};
- auto t_mem = system.ApplicationProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(
- t_mem_handle);
+ auto t_mem = ctx.GetObjectFromHandle<Kernel::KTransferMemory>(t_mem_handle);
LOG_INFO(Service_IRS,
"called, npad_type={}, npad_id={}, transfer_memory_size={}, "
diff --git a/src/core/hle/service/hid/resource_manager.cpp b/src/core/hle/service/hid/resource_manager.cpp
index 6c6cbd802..1f41e645d 100644
--- a/src/core/hle/service/hid/resource_manager.cpp
+++ b/src/core/hle/service/hid/resource_manager.cpp
@@ -10,18 +10,23 @@
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/hid/controllers/applet_resource.h"
+#include "core/hle/service/hid/controllers/capture_button.h"
#include "core/hle/service/hid/controllers/console_six_axis.h"
+#include "core/hle/service/hid/controllers/debug_mouse.h"
#include "core/hle/service/hid/controllers/debug_pad.h"
+#include "core/hle/service/hid/controllers/digitizer.h"
#include "core/hle/service/hid/controllers/gesture.h"
+#include "core/hle/service/hid/controllers/home_button.h"
#include "core/hle/service/hid/controllers/keyboard.h"
#include "core/hle/service/hid/controllers/mouse.h"
#include "core/hle/service/hid/controllers/npad.h"
#include "core/hle/service/hid/controllers/palma.h"
#include "core/hle/service/hid/controllers/seven_six_axis.h"
-#include "core/hle/service/hid/controllers/shared_memory_format.h"
#include "core/hle/service/hid/controllers/six_axis.h"
-#include "core/hle/service/hid/controllers/stubbed.h"
+#include "core/hle/service/hid/controllers/sleep_button.h"
#include "core/hle/service/hid/controllers/touchscreen.h"
+#include "core/hle/service/hid/controllers/types/shared_memory_format.h"
+#include "core/hle/service/hid/controllers/unique_pad.h"
namespace Service::HID {
@@ -46,42 +51,13 @@ void ResourceManager::Initialize() {
}
system.HIDCore().ReloadInputDevices();
- is_initialized = true;
-}
-
-void ResourceManager::InitializeController(u64 aruid) {
- SharedMemoryFormat* shared_memory = nullptr;
- const auto result = applet_resource->GetSharedMemoryFormat(&shared_memory, aruid);
- if (result.IsError()) {
- return;
- }
- debug_pad = std::make_shared<DebugPad>(system.HIDCore(), shared_memory->debug_pad);
- mouse = std::make_shared<Mouse>(system.HIDCore(), shared_memory->mouse);
- debug_mouse = std::make_shared<DebugMouse>(system.HIDCore(), shared_memory->debug_mouse);
- keyboard = std::make_shared<Keyboard>(system.HIDCore(), shared_memory->keyboard);
- unique_pad = std::make_shared<UniquePad>(system.HIDCore(), shared_memory->unique_pad.header);
- npad = std::make_shared<NPad>(system.HIDCore(), shared_memory->npad, service_context);
- gesture = std::make_shared<Gesture>(system.HIDCore(), shared_memory->gesture);
- touch_screen = std::make_shared<TouchScreen>(system.HIDCore(), shared_memory->touch_screen);
+ InitializeHidCommonSampler();
+ InitializeTouchScreenSampler();
+ InitializeConsoleSixAxisSampler();
+ InitializeAHidSampler();
- palma = std::make_shared<Palma>(system.HIDCore(), service_context);
-
- home_button = std::make_shared<HomeButton>(system.HIDCore(), shared_memory->home_button.header);
- sleep_button =
- std::make_shared<SleepButton>(system.HIDCore(), shared_memory->sleep_button.header);
- capture_button =
- std::make_shared<CaptureButton>(system.HIDCore(), shared_memory->capture_button.header);
- digitizer = std::make_shared<Digitizer>(system.HIDCore(), shared_memory->digitizer.header);
-
- six_axis = std::make_shared<SixAxis>(system.HIDCore(), npad);
- console_six_axis = std::make_shared<ConsoleSixAxis>(system.HIDCore(), shared_memory->console);
- seven_six_axis = std::make_shared<SevenSixAxis>(system);
-
- // Homebrew doesn't try to activate some controllers, so we activate them by default
- npad->Activate();
- six_axis->Activate();
- touch_screen->Activate();
+ is_initialized = true;
}
std::shared_ptr<AppletResource> ResourceManager::GetAppletResource() const {
@@ -153,28 +129,77 @@ std::shared_ptr<UniquePad> ResourceManager::GetUniquePad() const {
}
Result ResourceManager::CreateAppletResource(u64 aruid) {
- if (aruid == 0) {
+ if (aruid == SystemAruid) {
const auto result = RegisterCoreAppletResource();
if (result.IsError()) {
return result;
}
- return GetNpad()->Activate();
+ return GetNpad()->ActivateNpadResource();
}
const auto result = CreateAppletResourceImpl(aruid);
if (result.IsError()) {
return result;
}
- return GetNpad()->Activate(aruid);
+
+ // Homebrew doesn't try to activate some controllers, so we activate them by default
+ npad->Activate();
+ six_axis->Activate();
+ touch_screen->Activate();
+
+ return GetNpad()->ActivateNpadResource(aruid);
}
Result ResourceManager::CreateAppletResourceImpl(u64 aruid) {
std::scoped_lock lock{shared_mutex};
- const auto result = applet_resource->CreateAppletResource(aruid);
- if (result.IsSuccess()) {
- InitializeController(aruid);
- }
- return result;
+ return applet_resource->CreateAppletResource(aruid);
+}
+
+void ResourceManager::InitializeHidCommonSampler() {
+ debug_pad = std::make_shared<DebugPad>(system.HIDCore());
+ mouse = std::make_shared<Mouse>(system.HIDCore());
+ debug_mouse = std::make_shared<DebugMouse>(system.HIDCore());
+ keyboard = std::make_shared<Keyboard>(system.HIDCore());
+ unique_pad = std::make_shared<UniquePad>(system.HIDCore());
+ npad = std::make_shared<NPad>(system.HIDCore(), service_context);
+ gesture = std::make_shared<Gesture>(system.HIDCore());
+ home_button = std::make_shared<HomeButton>(system.HIDCore());
+ sleep_button = std::make_shared<SleepButton>(system.HIDCore());
+ capture_button = std::make_shared<CaptureButton>(system.HIDCore());
+ digitizer = std::make_shared<Digitizer>(system.HIDCore());
+
+ palma = std::make_shared<Palma>(system.HIDCore(), service_context);
+ six_axis = std::make_shared<SixAxis>(system.HIDCore(), npad);
+
+ debug_pad->SetAppletResource(applet_resource, &shared_mutex);
+ digitizer->SetAppletResource(applet_resource, &shared_mutex);
+ keyboard->SetAppletResource(applet_resource, &shared_mutex);
+ npad->SetNpadExternals(applet_resource, &shared_mutex);
+ six_axis->SetAppletResource(applet_resource, &shared_mutex);
+ mouse->SetAppletResource(applet_resource, &shared_mutex);
+ debug_mouse->SetAppletResource(applet_resource, &shared_mutex);
+ home_button->SetAppletResource(applet_resource, &shared_mutex);
+ sleep_button->SetAppletResource(applet_resource, &shared_mutex);
+ capture_button->SetAppletResource(applet_resource, &shared_mutex);
+}
+
+void ResourceManager::InitializeTouchScreenSampler() {
+ gesture = std::make_shared<Gesture>(system.HIDCore());
+ touch_screen = std::make_shared<TouchScreen>(system.HIDCore());
+
+ touch_screen->SetAppletResource(applet_resource, &shared_mutex);
+ gesture->SetAppletResource(applet_resource, &shared_mutex);
+}
+
+void ResourceManager::InitializeConsoleSixAxisSampler() {
+ console_six_axis = std::make_shared<ConsoleSixAxis>(system.HIDCore());
+ seven_six_axis = std::make_shared<SevenSixAxis>(system);
+
+ console_six_axis->SetAppletResource(applet_resource, &shared_mutex);
+}
+
+void ResourceManager::InitializeAHidSampler() {
+ // TODO
}
Result ResourceManager::RegisterCoreAppletResource() {
@@ -189,7 +214,11 @@ Result ResourceManager::UnregisterCoreAppletResource() {
Result ResourceManager::RegisterAppletResourceUserId(u64 aruid, bool bool_value) {
std::scoped_lock lock{shared_mutex};
- return applet_resource->RegisterAppletResourceUserId(aruid, bool_value);
+ auto result = applet_resource->RegisterAppletResourceUserId(aruid, bool_value);
+ if (result.IsSuccess()) {
+ result = npad->RegisterAppletResourceUserId(aruid);
+ }
+ return result;
}
void ResourceManager::UnregisterAppletResourceUserId(u64 aruid) {
@@ -227,8 +256,7 @@ void ResourceManager::EnableTouchScreen(u64 aruid, bool is_enabled) {
applet_resource->EnableTouchScreen(aruid, is_enabled);
}
-void ResourceManager::UpdateControllers(std::uintptr_t user_data,
- std::chrono::nanoseconds ns_late) {
+void ResourceManager::UpdateControllers(std::chrono::nanoseconds ns_late) {
auto& core_timing = system.CoreTiming();
debug_pad->OnUpdate(core_timing);
digitizer->OnUpdate(core_timing);
@@ -241,20 +269,19 @@ void ResourceManager::UpdateControllers(std::uintptr_t user_data,
capture_button->OnUpdate(core_timing);
}
-void ResourceManager::UpdateNpad(std::uintptr_t user_data, std::chrono::nanoseconds ns_late) {
+void ResourceManager::UpdateNpad(std::chrono::nanoseconds ns_late) {
auto& core_timing = system.CoreTiming();
npad->OnUpdate(core_timing);
}
-void ResourceManager::UpdateMouseKeyboard(std::uintptr_t user_data,
- std::chrono::nanoseconds ns_late) {
+void ResourceManager::UpdateMouseKeyboard(std::chrono::nanoseconds ns_late) {
auto& core_timing = system.CoreTiming();
mouse->OnUpdate(core_timing);
debug_mouse->OnUpdate(core_timing);
keyboard->OnUpdate(core_timing);
}
-void ResourceManager::UpdateMotion(std::uintptr_t user_data, std::chrono::nanoseconds ns_late) {
+void ResourceManager::UpdateMotion(std::chrono::nanoseconds ns_late) {
auto& core_timing = system.CoreTiming();
six_axis->OnUpdate(core_timing);
seven_six_axis->OnUpdate(core_timing);
@@ -273,34 +300,34 @@ IAppletResource::IAppletResource(Core::System& system_, std::shared_ptr<Resource
// Register update callbacks
npad_update_event = Core::Timing::CreateEvent(
"HID::UpdatePadCallback",
- [this, resource](std::uintptr_t user_data, s64 time, std::chrono::nanoseconds ns_late)
- -> std::optional<std::chrono::nanoseconds> {
+ [this, resource](
+ s64 time, std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto guard = LockService();
- resource->UpdateNpad(user_data, ns_late);
+ resource->UpdateNpad(ns_late);
return std::nullopt;
});
default_update_event = Core::Timing::CreateEvent(
"HID::UpdateDefaultCallback",
- [this, resource](std::uintptr_t user_data, s64 time, std::chrono::nanoseconds ns_late)
- -> std::optional<std::chrono::nanoseconds> {
+ [this, resource](
+ s64 time, std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto guard = LockService();
- resource->UpdateControllers(user_data, ns_late);
+ resource->UpdateControllers(ns_late);
return std::nullopt;
});
mouse_keyboard_update_event = Core::Timing::CreateEvent(
"HID::UpdateMouseKeyboardCallback",
- [this, resource](std::uintptr_t user_data, s64 time, std::chrono::nanoseconds ns_late)
- -> std::optional<std::chrono::nanoseconds> {
+ [this, resource](
+ s64 time, std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto guard = LockService();
- resource->UpdateMouseKeyboard(user_data, ns_late);
+ resource->UpdateMouseKeyboard(ns_late);
return std::nullopt;
});
motion_update_event = Core::Timing::CreateEvent(
"HID::UpdateMotionCallback",
- [this, resource](std::uintptr_t user_data, s64 time, std::chrono::nanoseconds ns_late)
- -> std::optional<std::chrono::nanoseconds> {
+ [this, resource](
+ s64 time, std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto guard = LockService();
- resource->UpdateMotion(user_data, ns_late);
+ resource->UpdateMotion(ns_late);
return std::nullopt;
});
@@ -314,10 +341,10 @@ IAppletResource::IAppletResource(Core::System& system_, std::shared_ptr<Resource
}
IAppletResource::~IAppletResource() {
- system.CoreTiming().UnscheduleEvent(npad_update_event, 0);
- system.CoreTiming().UnscheduleEvent(default_update_event, 0);
- system.CoreTiming().UnscheduleEvent(mouse_keyboard_update_event, 0);
- system.CoreTiming().UnscheduleEvent(motion_update_event, 0);
+ system.CoreTiming().UnscheduleEvent(npad_update_event);
+ system.CoreTiming().UnscheduleEvent(default_update_event);
+ system.CoreTiming().UnscheduleEvent(mouse_keyboard_update_event);
+ system.CoreTiming().UnscheduleEvent(motion_update_event);
resource_manager->FreeAppletResourceId(aruid);
}
diff --git a/src/core/hle/service/hid/resource_manager.h b/src/core/hle/service/hid/resource_manager.h
index 5ad7cb564..7a21d8eb8 100644
--- a/src/core/hle/service/hid/resource_manager.h
+++ b/src/core/hle/service/hid/resource_manager.h
@@ -20,24 +20,23 @@ class KSharedMemory;
namespace Service::HID {
class AppletResource;
+class CaptureButton;
class Controller_Stubbed;
class ConsoleSixAxis;
+class DebugMouse;
class DebugPad;
+class Digitizer;
class Gesture;
+class HomeButton;
class Keyboard;
class Mouse;
class NPad;
class Palma;
class SevenSixAxis;
class SixAxis;
+class SleepButton;
class TouchScreen;
-
-using CaptureButton = Controller_Stubbed;
-using DebugMouse = Mouse;
-using Digitizer = Controller_Stubbed;
-using HomeButton = Controller_Stubbed;
-using SleepButton = Controller_Stubbed;
-using UniquePad = Controller_Stubbed;
+class UniquePad;
class ResourceManager {
@@ -46,7 +45,6 @@ public:
~ResourceManager();
void Initialize();
- void InitializeController(u64 aruid);
std::shared_ptr<AppletResource> GetAppletResource() const;
std::shared_ptr<CaptureButton> GetCaptureButton() const;
@@ -81,17 +79,21 @@ public:
void EnablePadInput(u64 aruid, bool is_enabled);
void EnableTouchScreen(u64 aruid, bool is_enabled);
- void UpdateControllers(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
- void UpdateNpad(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
- void UpdateMouseKeyboard(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
- void UpdateMotion(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
+ void UpdateControllers(std::chrono::nanoseconds ns_late);
+ void UpdateNpad(std::chrono::nanoseconds ns_late);
+ void UpdateMouseKeyboard(std::chrono::nanoseconds ns_late);
+ void UpdateMotion(std::chrono::nanoseconds ns_late);
private:
Result CreateAppletResourceImpl(u64 aruid);
+ void InitializeHidCommonSampler();
+ void InitializeTouchScreenSampler();
+ void InitializeConsoleSixAxisSampler();
+ void InitializeAHidSampler();
bool is_initialized{false};
- mutable std::mutex shared_mutex;
+ mutable std::recursive_mutex shared_mutex;
std::shared_ptr<AppletResource> applet_resource = nullptr;
std::shared_ptr<CaptureButton> capture_button = nullptr;
diff --git a/src/core/hle/service/hle_ipc.cpp b/src/core/hle/service/hle_ipc.cpp
index 38955932c..39df77e43 100644
--- a/src/core/hle/service/hle_ipc.cpp
+++ b/src/core/hle/service/hle_ipc.cpp
@@ -146,10 +146,7 @@ HLERequestContext::HLERequestContext(Kernel::KernelCore& kernel_, Core::Memory::
HLERequestContext::~HLERequestContext() = default;
-void HLERequestContext::ParseCommandBuffer(Kernel::KProcess& process, u32_le* src_cmdbuf,
- bool incoming) {
- client_handle_table = &process.GetHandleTable();
-
+void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) {
IPC::RequestParser rp(src_cmdbuf);
command_header = rp.PopRaw<IPC::CommandHeader>();
@@ -162,7 +159,7 @@ void HLERequestContext::ParseCommandBuffer(Kernel::KProcess& process, u32_le* sr
if (command_header->enable_handle_descriptor) {
handle_descriptor_header = rp.PopRaw<IPC::HandleDescriptorHeader>();
if (handle_descriptor_header->send_current_pid) {
- pid = process.GetProcessId();
+ pid = thread->GetOwnerProcess()->GetProcessId();
rp.Skip(2, false);
}
if (incoming) {
@@ -270,9 +267,10 @@ void HLERequestContext::ParseCommandBuffer(Kernel::KProcess& process, u32_le* sr
rp.Skip(1, false); // The command is actually an u64, but we don't use the high part.
}
-Result HLERequestContext::PopulateFromIncomingCommandBuffer(Kernel::KProcess& process,
- u32_le* src_cmdbuf) {
- ParseCommandBuffer(process, src_cmdbuf, true);
+Result HLERequestContext::PopulateFromIncomingCommandBuffer(u32_le* src_cmdbuf) {
+ client_handle_table = &thread->GetOwnerProcess()->GetHandleTable();
+
+ ParseCommandBuffer(src_cmdbuf, true);
if (command_header->IsCloseCommand()) {
// Close does not populate the rest of the IPC header
@@ -284,9 +282,9 @@ Result HLERequestContext::PopulateFromIncomingCommandBuffer(Kernel::KProcess& pr
return ResultSuccess;
}
-Result HLERequestContext::WriteToOutgoingCommandBuffer(Kernel::KThread& requesting_thread) {
+Result HLERequestContext::WriteToOutgoingCommandBuffer() {
auto current_offset = handles_offset;
- auto& owner_process = *requesting_thread.GetOwnerProcess();
+ auto& owner_process = *thread->GetOwnerProcess();
auto& handle_table = owner_process.GetHandleTable();
for (auto& object : outgoing_copy_objects) {
@@ -319,7 +317,7 @@ Result HLERequestContext::WriteToOutgoingCommandBuffer(Kernel::KThread& requesti
}
// Copy the translated command buffer back into the thread's command buffer area.
- memory.WriteBlock(requesting_thread.GetTlsAddress(), cmd_buf.data(), write_size * sizeof(u32));
+ memory.WriteBlock(thread->GetTlsAddress(), cmd_buf.data(), write_size * sizeof(u32));
return ResultSuccess;
}
diff --git a/src/core/hle/service/hle_ipc.h b/src/core/hle/service/hle_ipc.h
index 18d464c63..40d86943e 100644
--- a/src/core/hle/service/hle_ipc.h
+++ b/src/core/hle/service/hle_ipc.h
@@ -17,6 +17,7 @@
#include "common/concepts.h"
#include "common/swap.h"
#include "core/hle/ipc.h"
+#include "core/hle/kernel/k_handle_table.h"
#include "core/hle/kernel/svc_common.h"
union Result;
@@ -196,10 +197,10 @@ public:
}
/// Populates this context with data from the requesting process/thread.
- Result PopulateFromIncomingCommandBuffer(Kernel::KProcess& process, u32_le* src_cmdbuf);
+ Result PopulateFromIncomingCommandBuffer(u32_le* src_cmdbuf);
/// Writes data from this context back to the requesting process/thread.
- Result WriteToOutgoingCommandBuffer(Kernel::KThread& requesting_thread);
+ Result WriteToOutgoingCommandBuffer();
[[nodiscard]] u32_le GetHipcCommand() const {
return command;
@@ -359,8 +360,17 @@ public:
return *thread;
}
- Kernel::KHandleTable& GetClientHandleTable() {
- return *client_handle_table;
+ [[nodiscard]] Core::Memory::Memory& GetMemory() const {
+ return memory;
+ }
+
+ template <typename T>
+ Kernel::KScopedAutoObject<T> GetObjectFromHandle(u32 handle) {
+ auto obj = client_handle_table->GetObjectForIpc(handle, thread);
+ if (obj.IsNotNull()) {
+ return obj->DynamicCast<T*>();
+ }
+ return nullptr;
}
[[nodiscard]] std::shared_ptr<SessionRequestManager> GetManager() const {
@@ -378,7 +388,7 @@ public:
private:
friend class IPC::ResponseBuilder;
- void ParseCommandBuffer(Kernel::KProcess& process, u32_le* src_cmdbuf, bool incoming);
+ void ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming);
std::array<u32, IPC::COMMAND_BUFFER_LENGTH> cmd_buf;
Kernel::KServerSession* server_session{};
diff --git a/src/core/hle/service/ipc_helpers.h b/src/core/hle/service/ipc_helpers.h
index 0e222362e..4b02872fb 100644
--- a/src/core/hle/service/ipc_helpers.h
+++ b/src/core/hle/service/ipc_helpers.h
@@ -151,8 +151,8 @@ public:
if (manager->IsDomain()) {
context->AddDomainObject(std::move(iface));
} else {
- kernel.ApplicationProcess()->GetResourceLimit()->Reserve(
- Kernel::LimitableResource::SessionCountMax, 1);
+ ASSERT(Kernel::GetCurrentProcess(kernel).GetResourceLimit()->Reserve(
+ Kernel::LimitableResource::SessionCountMax, 1));
auto* session = Kernel::KSession::Create(kernel);
session->Initialize(nullptr, 0);
diff --git a/src/core/hle/service/jit/jit.cpp b/src/core/hle/service/jit/jit.cpp
index 65851fc05..77aa6d7d1 100644
--- a/src/core/hle/service/jit/jit.cpp
+++ b/src/core/hle/service/jit/jit.cpp
@@ -4,11 +4,11 @@
#include "core/arm/debug.h"
#include "core/arm/symbols.h"
#include "core/core.h"
-#include "core/hle/kernel/k_code_memory.h"
#include "core/hle/kernel/k_transfer_memory.h"
#include "core/hle/result.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/jit/jit.h"
+#include "core/hle/service/jit/jit_code_memory.h"
#include "core/hle/service/jit/jit_context.h"
#include "core/hle/service/server_manager.h"
#include "core/hle/service/service.h"
@@ -23,9 +23,11 @@ struct CodeRange {
class IJitEnvironment final : public ServiceFramework<IJitEnvironment> {
public:
- explicit IJitEnvironment(Core::System& system_, Kernel::KProcess& process_, CodeRange user_rx,
- CodeRange user_ro)
- : ServiceFramework{system_, "IJitEnvironment"}, process{&process_},
+ explicit IJitEnvironment(Core::System& system_,
+ Kernel::KScopedAutoObject<Kernel::KProcess>&& process_,
+ CodeMemory&& user_rx_, CodeMemory&& user_ro_)
+ : ServiceFramework{system_, "IJitEnvironment"}, process{std::move(process_)},
+ user_rx{std::move(user_rx_)}, user_ro{std::move(user_ro_)},
context{system_.ApplicationMemory()} {
// clang-format off
static const FunctionInfo functions[] = {
@@ -39,10 +41,13 @@ public:
RegisterHandlers(functions);
// Identity map user code range into sysmodule context
- configuration.user_ro_memory = user_ro;
- configuration.user_rx_memory = user_rx;
- configuration.sys_ro_memory = user_ro;
- configuration.sys_rx_memory = user_rx;
+ configuration.user_rx_memory.size = user_rx.GetSize();
+ configuration.user_rx_memory.offset = user_rx.GetAddress();
+ configuration.user_ro_memory.size = user_ro.GetSize();
+ configuration.user_ro_memory.offset = user_ro.GetAddress();
+
+ configuration.sys_rx_memory = configuration.user_rx_memory;
+ configuration.sys_ro_memory = configuration.user_ro_memory;
}
void GenerateCode(HLERequestContext& ctx) {
@@ -188,7 +193,7 @@ public:
return;
}
- auto tmem{process->GetHandleTable().GetObject<Kernel::KTransferMemory>(tmem_handle)};
+ auto tmem{ctx.GetObjectFromHandle<Kernel::KTransferMemory>(tmem_handle)};
if (tmem.IsNull()) {
LOG_ERROR(Service_JIT, "attempted to load plugin with invalid transfer memory handle");
IPC::ResponseBuilder rb{ctx, 2};
@@ -318,6 +323,8 @@ private:
}
Kernel::KScopedAutoObject<Kernel::KProcess> process;
+ CodeMemory user_rx;
+ CodeMemory user_ro;
GuestCallbacks callbacks;
JITConfiguration configuration;
JITContext context;
@@ -335,6 +342,7 @@ public:
RegisterHandlers(functions);
}
+private:
void CreateJitEnvironment(HLERequestContext& ctx) {
LOG_DEBUG(Service_JIT, "called");
@@ -356,11 +364,7 @@ public:
return;
}
- // Fetch using the handle table for the application process here,
- // since we are not multiprocess yet.
- const auto& handle_table{system.ApplicationProcess()->GetHandleTable()};
-
- auto process{handle_table.GetObject<Kernel::KProcess>(process_handle)};
+ auto process{ctx.GetObjectFromHandle<Kernel::KProcess>(process_handle)};
if (process.IsNull()) {
LOG_ERROR(Service_JIT, "process is null for handle=0x{:08X}", process_handle);
IPC::ResponseBuilder rb{ctx, 2};
@@ -368,7 +372,7 @@ public:
return;
}
- auto rx_mem{handle_table.GetObject<Kernel::KCodeMemory>(rx_mem_handle)};
+ auto rx_mem{ctx.GetObjectFromHandle<Kernel::KCodeMemory>(rx_mem_handle)};
if (rx_mem.IsNull()) {
LOG_ERROR(Service_JIT, "rx_mem is null for handle=0x{:08X}", rx_mem_handle);
IPC::ResponseBuilder rb{ctx, 2};
@@ -376,7 +380,7 @@ public:
return;
}
- auto ro_mem{handle_table.GetObject<Kernel::KCodeMemory>(ro_mem_handle)};
+ auto ro_mem{ctx.GetObjectFromHandle<Kernel::KCodeMemory>(ro_mem_handle)};
if (ro_mem.IsNull()) {
LOG_ERROR(Service_JIT, "ro_mem is null for handle=0x{:08X}", ro_mem_handle);
IPC::ResponseBuilder rb{ctx, 2};
@@ -384,20 +388,35 @@ public:
return;
}
- const CodeRange user_rx{
- .offset = GetInteger(rx_mem->GetSourceAddress()),
- .size = parameters.rx_size,
- };
+ CodeMemory rx, ro;
+ Result res;
- const CodeRange user_ro{
- .offset = GetInteger(ro_mem->GetSourceAddress()),
- .size = parameters.ro_size,
- };
+ res = rx.Initialize(*process, *rx_mem, parameters.rx_size,
+ Kernel::Svc::MemoryPermission::ReadExecute, generate_random);
+ if (R_FAILED(res)) {
+ LOG_ERROR(Service_JIT, "rx_mem could not be mapped for handle=0x{:08X}", rx_mem_handle);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(res);
+ return;
+ }
+
+ res = ro.Initialize(*process, *ro_mem, parameters.ro_size,
+ Kernel::Svc::MemoryPermission::Read, generate_random);
+ if (R_FAILED(res)) {
+ LOG_ERROR(Service_JIT, "ro_mem could not be mapped for handle=0x{:08X}", ro_mem_handle);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(res);
+ return;
+ }
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
- rb.PushIpcInterface<IJitEnvironment>(system, *process, user_rx, user_ro);
+ rb.PushIpcInterface<IJitEnvironment>(system, std::move(process), std::move(rx),
+ std::move(ro));
}
+
+private:
+ std::mt19937_64 generate_random{};
};
void LoopProcess(Core::System& system) {
diff --git a/src/core/hle/service/jit/jit_code_memory.cpp b/src/core/hle/service/jit/jit_code_memory.cpp
new file mode 100644
index 000000000..2b480488a
--- /dev/null
+++ b/src/core/hle/service/jit/jit_code_memory.cpp
@@ -0,0 +1,54 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/hle/service/jit/jit_code_memory.h"
+
+namespace Service::JIT {
+
+Result CodeMemory::Initialize(Kernel::KProcess& process, Kernel::KCodeMemory& code_memory,
+ size_t size, Kernel::Svc::MemoryPermission perm,
+ std::mt19937_64& generate_random) {
+ auto& page_table = process.GetPageTable();
+ const u64 alias_code_start =
+ GetInteger(page_table.GetAliasCodeRegionStart()) / Kernel::PageSize;
+ const u64 alias_code_size = page_table.GetAliasCodeRegionSize() / Kernel::PageSize;
+
+ // NOTE: This will retry indefinitely until mapping the code memory succeeds.
+ while (true) {
+ // Generate a new trial address.
+ const u64 mapped_address =
+ (alias_code_start + (generate_random() % alias_code_size)) * Kernel::PageSize;
+
+ // Try to map the address
+ R_TRY_CATCH(code_memory.MapToOwner(mapped_address, size, perm)) {
+ R_CATCH(Kernel::ResultInvalidMemoryRegion) {
+ // If we could not map here, retry.
+ continue;
+ }
+ }
+ R_END_TRY_CATCH;
+
+ // Set members.
+ m_code_memory = std::addressof(code_memory);
+ m_size = size;
+ m_address = mapped_address;
+ m_perm = perm;
+
+ // Open a new reference to the code memory.
+ m_code_memory->Open();
+
+ // We succeeded.
+ R_SUCCEED();
+ }
+}
+
+void CodeMemory::Finalize() {
+ if (m_code_memory) {
+ R_ASSERT(m_code_memory->UnmapFromOwner(m_address, m_size));
+ m_code_memory->Close();
+ }
+
+ m_code_memory = nullptr;
+}
+
+} // namespace Service::JIT
diff --git a/src/core/hle/service/jit/jit_code_memory.h b/src/core/hle/service/jit/jit_code_memory.h
new file mode 100644
index 000000000..6376d4c4e
--- /dev/null
+++ b/src/core/hle/service/jit/jit_code_memory.h
@@ -0,0 +1,49 @@
+// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <random>
+
+#include "core/hle/kernel/k_code_memory.h"
+
+namespace Service::JIT {
+
+class CodeMemory {
+public:
+ YUZU_NON_COPYABLE(CodeMemory);
+
+ explicit CodeMemory() = default;
+
+ CodeMemory(CodeMemory&& rhs) {
+ std::swap(m_code_memory, rhs.m_code_memory);
+ std::swap(m_size, rhs.m_size);
+ std::swap(m_address, rhs.m_address);
+ std::swap(m_perm, rhs.m_perm);
+ }
+
+ ~CodeMemory() {
+ this->Finalize();
+ }
+
+public:
+ Result Initialize(Kernel::KProcess& process, Kernel::KCodeMemory& code_memory, size_t size,
+ Kernel::Svc::MemoryPermission perm, std::mt19937_64& generate_random);
+ void Finalize();
+
+ size_t GetSize() const {
+ return m_size;
+ }
+
+ u64 GetAddress() const {
+ return m_address;
+ }
+
+private:
+ Kernel::KCodeMemory* m_code_memory{};
+ size_t m_size{};
+ u64 m_address{};
+ Kernel::Svc::MemoryPermission m_perm{};
+};
+
+} // namespace Service::JIT
diff --git a/src/core/hle/service/nvnflinger/nvnflinger.cpp b/src/core/hle/service/nvnflinger/nvnflinger.cpp
index 6352b09a9..aa8aaa2d9 100644
--- a/src/core/hle/service/nvnflinger/nvnflinger.cpp
+++ b/src/core/hle/service/nvnflinger/nvnflinger.cpp
@@ -67,7 +67,7 @@ Nvnflinger::Nvnflinger(Core::System& system_, HosBinderDriverServer& hos_binder_
// Schedule the screen composition events
multi_composition_event = Core::Timing::CreateEvent(
"ScreenComposition",
- [this](std::uintptr_t, s64 time,
+ [this](s64 time,
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
vsync_signal.Set();
return std::chrono::nanoseconds(GetNextTicks());
@@ -75,7 +75,7 @@ Nvnflinger::Nvnflinger(Core::System& system_, HosBinderDriverServer& hos_binder_
single_composition_event = Core::Timing::CreateEvent(
"ScreenComposition",
- [this](std::uintptr_t, s64 time,
+ [this](s64 time,
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
const auto lock_guard = Lock();
Compose();
@@ -93,11 +93,11 @@ Nvnflinger::Nvnflinger(Core::System& system_, HosBinderDriverServer& hos_binder_
Nvnflinger::~Nvnflinger() {
if (system.IsMulticore()) {
- system.CoreTiming().UnscheduleEvent(multi_composition_event, {});
+ system.CoreTiming().UnscheduleEvent(multi_composition_event);
vsync_thread.request_stop();
vsync_signal.Set();
} else {
- system.CoreTiming().UnscheduleEvent(single_composition_event, {});
+ system.CoreTiming().UnscheduleEvent(single_composition_event);
}
ShutdownLayers();
diff --git a/src/core/hle/service/ro/ro.cpp b/src/core/hle/service/ro/ro.cpp
index 17110d3f1..f0658bb5d 100644
--- a/src/core/hle/service/ro/ro.cpp
+++ b/src/core/hle/service/ro/ro.cpp
@@ -651,10 +651,9 @@ private:
void RegisterProcessHandle(HLERequestContext& ctx) {
LOG_DEBUG(Service_LDR, "(called)");
- auto process_h = ctx.GetClientHandleTable().GetObject(ctx.GetCopyHandle(0));
+ auto process = ctx.GetObjectFromHandle<Kernel::KProcess>(ctx.GetCopyHandle(0));
auto client_pid = ctx.GetPID();
- auto result = interface.RegisterProcessHandle(client_pid,
- process_h->DynamicCast<Kernel::KProcess*>());
+ auto result = interface.RegisterProcessHandle(client_pid, process.GetPointerUnsafe());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@@ -671,12 +670,11 @@ private:
IPC::RequestParser rp{ctx};
auto params = rp.PopRaw<InputParameters>();
- auto process_h = ctx.GetClientHandleTable().GetObject(ctx.GetCopyHandle(0));
+ auto process = ctx.GetObjectFromHandle<Kernel::KProcess>(ctx.GetCopyHandle(0));
auto client_pid = ctx.GetPID();
- auto result =
- interface.RegisterProcessModuleInfo(client_pid, params.nrr_address, params.nrr_size,
- process_h->DynamicCast<Kernel::KProcess*>());
+ auto result = interface.RegisterProcessModuleInfo(
+ client_pid, params.nrr_address, params.nrr_size, process.GetPointerUnsafe());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp
index 6808247a9..15edb23e0 100644
--- a/src/core/hle/service/server_manager.cpp
+++ b/src/core/hle/service/server_manager.cpp
@@ -47,7 +47,7 @@ ServerManager::~ServerManager() {
m_stopped.Wait();
m_threads.clear();
- // Clean up ports.
+ // Clean up server ports.
for (const auto& [port, handler] : m_ports) {
port->Close();
}
@@ -97,22 +97,15 @@ Result ServerManager::RegisterNamedService(const std::string& service_name,
u32 max_sessions) {
ASSERT(m_sessions.size() + m_ports.size() < MaximumWaitObjects);
- // Add the new server to sm:.
- ASSERT(R_SUCCEEDED(
- m_system.ServiceManager().RegisterService(service_name, max_sessions, handler_factory)));
-
- // Get the registered port.
- Kernel::KPort* port{};
- ASSERT(
- R_SUCCEEDED(m_system.ServiceManager().GetServicePort(std::addressof(port), service_name)));
-
- // Open a new reference to the server port.
- port->GetServerPort().Open();
+ // Add the new server to sm: and get the moved server port.
+ Kernel::KServerPort* server_port{};
+ R_ASSERT(m_system.ServiceManager().RegisterService(std::addressof(server_port), service_name,
+ max_sessions, handler_factory));
// Begin tracking the server port.
{
std::scoped_lock ll{m_list_mutex};
- m_ports.emplace(std::addressof(port->GetServerPort()), std::move(handler_factory));
+ m_ports.emplace(server_port, std::move(handler_factory));
}
// Signal the wakeup event.
@@ -372,7 +365,7 @@ Result ServerManager::OnSessionEvent(Kernel::KServerSession* session,
// Try to receive a message.
std::shared_ptr<HLERequestContext> context;
- rc = session->ReceiveRequest(&context, manager);
+ rc = session->ReceiveRequestHLE(&context, manager);
// If the session has been closed, we're done.
if (rc == Kernel::ResultSessionClosed) {
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 00531b021..39124c5fd 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -203,7 +203,7 @@ Result ServiceFrameworkBase::HandleSyncRequest(Kernel::KServerSession& session,
// If emulation was shutdown, we are closing service threads, do not write the response back to
// memory that may be shutting down as well.
if (system.IsPoweredOn()) {
- ctx.WriteToOutgoingCommandBuffer(ctx.GetThread());
+ ctx.WriteToOutgoingCommandBuffer();
}
return result;
diff --git a/src/core/hle/service/set/set_sys.cpp b/src/core/hle/service/set/set_sys.cpp
index 0653779d5..8e637f963 100644
--- a/src/core/hle/service/set/set_sys.cpp
+++ b/src/core/hle/service/set/set_sys.cpp
@@ -507,6 +507,14 @@ void SET_SYS::SetTvSettings(HLERequestContext& ctx) {
rb.Push(ResultSuccess);
}
+void SET_SYS::GetDebugModeFlag(HLERequestContext& ctx) {
+ LOG_DEBUG(Service_SET, "called");
+
+ IPC::ResponseBuilder rb{ctx, 3};
+ rb.Push(ResultSuccess);
+ rb.Push<u32>(0);
+}
+
void SET_SYS::GetQuestFlag(HLERequestContext& ctx) {
LOG_WARNING(Service_SET, "(STUBBED) called");
@@ -926,7 +934,7 @@ SET_SYS::SET_SYS(Core::System& system_) : ServiceFramework{system_, "set:sys"},
{59, &SET_SYS::SetNetworkSystemClockContext, "SetNetworkSystemClockContext"},
{60, &SET_SYS::IsUserSystemClockAutomaticCorrectionEnabled, "IsUserSystemClockAutomaticCorrectionEnabled"},
{61, &SET_SYS::SetUserSystemClockAutomaticCorrectionEnabled, "SetUserSystemClockAutomaticCorrectionEnabled"},
- {62, nullptr, "GetDebugModeFlag"},
+ {62, &SET_SYS::GetDebugModeFlag, "GetDebugModeFlag"},
{63, &SET_SYS::GetPrimaryAlbumStorage, "GetPrimaryAlbumStorage"},
{64, nullptr, "SetPrimaryAlbumStorage"},
{65, nullptr, "GetUsb30EnableFlag"},
@@ -1143,6 +1151,8 @@ void SET_SYS::StoreSettings() {
}
void SET_SYS::StoreSettingsThreadFunc(std::stop_token stop_token) {
+ Common::SetCurrentThreadName("SettingsStore");
+
while (Common::StoppableTimedWait(stop_token, std::chrono::minutes(1))) {
std::scoped_lock l{m_save_needed_mutex};
if (!std::exchange(m_save_needed, false)) {
diff --git a/src/core/hle/service/set/set_sys.h b/src/core/hle/service/set/set_sys.h
index 3785d93d8..853f76fce 100644
--- a/src/core/hle/service/set/set_sys.h
+++ b/src/core/hle/service/set/set_sys.h
@@ -98,6 +98,7 @@ private:
void GetSettingsItemValue(HLERequestContext& ctx);
void GetTvSettings(HLERequestContext& ctx);
void SetTvSettings(HLERequestContext& ctx);
+ void GetDebugModeFlag(HLERequestContext& ctx);
void GetQuestFlag(HLERequestContext& ctx);
void GetDeviceTimeZoneLocationName(HLERequestContext& ctx);
void SetDeviceTimeZoneLocationName(HLERequestContext& ctx);
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp
index 296ee6e89..1095dcf6c 100644
--- a/src/core/hle/service/sm/sm.cpp
+++ b/src/core/hle/service/sm/sm.cpp
@@ -29,8 +29,7 @@ ServiceManager::ServiceManager(Kernel::KernelCore& kernel_) : kernel{kernel_} {
ServiceManager::~ServiceManager() {
for (auto& [name, port] : service_ports) {
- port->GetClientPort().Close();
- port->GetServerPort().Close();
+ port->Close();
}
if (deferral_event) {
@@ -50,8 +49,8 @@ static Result ValidateServiceName(const std::string& name) {
return ResultSuccess;
}
-Result ServiceManager::RegisterService(std::string name, u32 max_sessions,
- SessionRequestHandlerFactory handler) {
+Result ServiceManager::RegisterService(Kernel::KServerPort** out_server_port, std::string name,
+ u32 max_sessions, SessionRequestHandlerFactory handler) {
R_TRY(ValidateServiceName(name));
std::scoped_lock lk{lock};
@@ -66,13 +65,17 @@ Result ServiceManager::RegisterService(std::string name, u32 max_sessions,
// Register the port.
Kernel::KPort::Register(kernel, port);
- service_ports.emplace(name, port);
+ service_ports.emplace(name, std::addressof(port->GetClientPort()));
registered_services.emplace(name, handler);
if (deferral_event) {
deferral_event->Signal();
}
- return ResultSuccess;
+ // Set our output.
+ *out_server_port = std::addressof(port->GetServerPort());
+
+ // We succeeded.
+ R_SUCCEED();
}
Result ServiceManager::UnregisterService(const std::string& name) {
@@ -91,7 +94,8 @@ Result ServiceManager::UnregisterService(const std::string& name) {
return ResultSuccess;
}
-Result ServiceManager::GetServicePort(Kernel::KPort** out_port, const std::string& name) {
+Result ServiceManager::GetServicePort(Kernel::KClientPort** out_client_port,
+ const std::string& name) {
R_TRY(ValidateServiceName(name));
std::scoped_lock lk{lock};
@@ -101,7 +105,7 @@ Result ServiceManager::GetServicePort(Kernel::KPort** out_port, const std::strin
return Service::SM::ResultNotRegistered;
}
- *out_port = it->second;
+ *out_client_port = it->second;
return ResultSuccess;
}
@@ -172,8 +176,8 @@ Result SM::GetServiceImpl(Kernel::KClientSession** out_client_session, HLEReques
std::string name(PopServiceName(rp));
// Find the named port.
- Kernel::KPort* port{};
- auto port_result = service_manager.GetServicePort(&port, name);
+ Kernel::KClientPort* client_port{};
+ auto port_result = service_manager.GetServicePort(&client_port, name);
if (port_result == Service::SM::ResultInvalidServiceName) {
LOG_ERROR(Service_SM, "Invalid service name '{}'", name);
return Service::SM::ResultInvalidServiceName;
@@ -187,7 +191,7 @@ Result SM::GetServiceImpl(Kernel::KClientSession** out_client_session, HLEReques
// Create a new session.
Kernel::KClientSession* session{};
- if (const auto result = port->GetClientPort().CreateSession(&session); result.IsError()) {
+ if (const auto result = client_port->CreateSession(&session); result.IsError()) {
LOG_ERROR(Service_SM, "called service={} -> error 0x{:08X}", name, result.raw);
return result;
}
@@ -221,7 +225,9 @@ void SM::RegisterServiceImpl(HLERequestContext& ctx, std::string name, u32 max_s
LOG_DEBUG(Service_SM, "called with name={}, max_session_count={}, is_light={}", name,
max_session_count, is_light);
- if (const auto result = service_manager.RegisterService(name, max_session_count, nullptr);
+ Kernel::KServerPort* server_port{};
+ if (const auto result = service_manager.RegisterService(std::addressof(server_port), name,
+ max_session_count, nullptr);
result.IsError()) {
LOG_ERROR(Service_SM, "failed to register service with error_code={:08X}", result.raw);
IPC::ResponseBuilder rb{ctx, 2};
@@ -229,13 +235,9 @@ void SM::RegisterServiceImpl(HLERequestContext& ctx, std::string name, u32 max_s
return;
}
- auto* port = Kernel::KPort::Create(kernel);
- port->Initialize(ServerSessionCountMax, is_light, 0);
- SCOPE_EXIT({ port->GetClientPort().Close(); });
-
IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles};
rb.Push(ResultSuccess);
- rb.PushMoveObjects(port->GetServerPort());
+ rb.PushMoveObjects(server_port);
}
void SM::UnregisterService(HLERequestContext& ctx) {
diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h
index ff74f588a..4ae32a9c1 100644
--- a/src/core/hle/service/sm/sm.h
+++ b/src/core/hle/service/sm/sm.h
@@ -56,10 +56,10 @@ public:
explicit ServiceManager(Kernel::KernelCore& kernel_);
~ServiceManager();
- Result RegisterService(std::string name, u32 max_sessions,
- SessionRequestHandlerFactory handler_factory);
+ Result RegisterService(Kernel::KServerPort** out_server_port, std::string name,
+ u32 max_sessions, SessionRequestHandlerFactory handler_factory);
Result UnregisterService(const std::string& name);
- Result GetServicePort(Kernel::KPort** out_port, const std::string& name);
+ Result GetServicePort(Kernel::KClientPort** out_client_port, const std::string& name);
template <Common::DerivedFrom<SessionRequestHandler> T>
std::shared_ptr<T> GetService(const std::string& service_name) const {
@@ -84,7 +84,7 @@ private:
/// Map of registered services, retrieved using GetServicePort.
std::mutex lock;
std::unordered_map<std::string, SessionRequestHandlerFactory> registered_services;
- std::unordered_map<std::string, Kernel::KPort*> service_ports;
+ std::unordered_map<std::string, Kernel::KClientPort*> service_ports;
/// Kernel context
Kernel::KernelCore& kernel;
diff --git a/src/core/hle/service/sm/sm_controller.cpp b/src/core/hle/service/sm/sm_controller.cpp
index 7dce28fe0..7f0fb91d0 100644
--- a/src/core/hle/service/sm/sm_controller.cpp
+++ b/src/core/hle/service/sm/sm_controller.cpp
@@ -28,7 +28,6 @@ void Controller::ConvertCurrentObjectToDomain(HLERequestContext& ctx) {
void Controller::CloneCurrentObject(HLERequestContext& ctx) {
LOG_DEBUG(Service, "called");
- auto& process = *ctx.GetThread().GetOwnerProcess();
auto session_manager = ctx.GetManager();
// FIXME: this is duplicated from the SVC, it should just call it instead
@@ -36,11 +35,11 @@ void Controller::CloneCurrentObject(HLERequestContext& ctx) {
// Reserve a new session from the process resource limit.
Kernel::KScopedResourceReservation session_reservation(
- &process, Kernel::LimitableResource::SessionCountMax);
+ Kernel::GetCurrentProcessPointer(kernel), Kernel::LimitableResource::SessionCountMax);
ASSERT(session_reservation.Succeeded());
// Create the session.
- Kernel::KSession* session = Kernel::KSession::Create(system.Kernel());
+ Kernel::KSession* session = Kernel::KSession::Create(kernel);
ASSERT(session != nullptr);
// Initialize the session.
@@ -50,7 +49,7 @@ void Controller::CloneCurrentObject(HLERequestContext& ctx) {
session_reservation.Commit();
// Register the session.
- Kernel::KSession::Register(system.Kernel(), session);
+ Kernel::KSession::Register(kernel, session);
// Register with server manager.
session_manager->GetServerManager().RegisterSession(&session->GetServerSession(),
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp
index 60ee78e89..c9f8707b7 100644
--- a/src/core/loader/deconstructed_rom_directory.cpp
+++ b/src/core/loader/deconstructed_rom_directory.cpp
@@ -129,9 +129,10 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect
}
metadata.Print();
- // Enable NCE only for programs with 39-bit address space.
+ // Enable NCE only for applications with 39-bit address space.
const bool is_39bit =
metadata.GetAddressSpaceType() == FileSys::ProgramAddressSpaceType::Is39Bit;
+ const bool is_application = metadata.GetPoolPartition() == FileSys::PoolPartition::Application;
Settings::SetNceEnabled(is_39bit);
const std::array static_modules = {"rtld", "main", "subsdk0", "subsdk1", "subsdk2",
@@ -147,7 +148,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect
const auto GetPatcher = [&](size_t i) -> Core::NCE::Patcher* {
#ifdef HAS_NCE
- if (Settings::IsNceEnabled()) {
+ if (is_application && Settings::IsNceEnabled()) {
return &module_patchers[i];
}
#endif
@@ -175,7 +176,7 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect
// Enable direct memory mapping in case of NCE.
const u64 fastmem_base = [&]() -> size_t {
- if (Settings::IsNceEnabled()) {
+ if (is_application && Settings::IsNceEnabled()) {
auto& buffer = system.DeviceMemory().buffer;
buffer.EnableDirectMappedAddress();
return reinterpret_cast<u64>(buffer.VirtualBasePointer());
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 169bf4c8c..8176a41be 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -10,6 +10,7 @@
#include "common/assert.h"
#include "common/atomic_ops.h"
#include "common/common_types.h"
+#include "common/heap_tracker.h"
#include "common/logging/log.h"
#include "common/page_table.h"
#include "common/scope_exit.h"
@@ -45,11 +46,25 @@ struct Memory::Impl {
void SetCurrentPageTable(Kernel::KProcess& process) {
current_page_table = &process.GetPageTable().GetImpl();
- current_page_table->fastmem_arena = system.DeviceMemory().buffer.VirtualBasePointer();
+
+ if (std::addressof(process) == system.ApplicationProcess() &&
+ Settings::IsFastmemEnabled()) {
+ current_page_table->fastmem_arena = system.DeviceMemory().buffer.VirtualBasePointer();
+ } else {
+ current_page_table->fastmem_arena = nullptr;
+ }
+
+#ifdef __linux__
+ heap_tracker.emplace(system.DeviceMemory().buffer);
+ buffer = std::addressof(*heap_tracker);
+#else
+ buffer = std::addressof(system.DeviceMemory().buffer);
+#endif
}
void MapMemoryRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
- Common::PhysicalAddress target, Common::MemoryPermission perms) {
+ Common::PhysicalAddress target, Common::MemoryPermission perms,
+ bool separate_heap) {
ASSERT_MSG((size & YUZU_PAGEMASK) == 0, "non-page aligned size: {:016X}", size);
ASSERT_MSG((base & YUZU_PAGEMASK) == 0, "non-page aligned base: {:016X}", GetInteger(base));
ASSERT_MSG(target >= DramMemoryMap::Base, "Out of bounds target: {:016X}",
@@ -57,20 +72,21 @@ struct Memory::Impl {
MapPages(page_table, base / YUZU_PAGESIZE, size / YUZU_PAGESIZE, target,
Common::PageType::Memory);
- if (Settings::IsFastmemEnabled()) {
- system.DeviceMemory().buffer.Map(GetInteger(base),
- GetInteger(target) - DramMemoryMap::Base, size, perms);
+ if (current_page_table->fastmem_arena) {
+ buffer->Map(GetInteger(base), GetInteger(target) - DramMemoryMap::Base, size, perms,
+ separate_heap);
}
}
- void UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size) {
+ void UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
+ bool separate_heap) {
ASSERT_MSG((size & YUZU_PAGEMASK) == 0, "non-page aligned size: {:016X}", size);
ASSERT_MSG((base & YUZU_PAGEMASK) == 0, "non-page aligned base: {:016X}", GetInteger(base));
MapPages(page_table, base / YUZU_PAGESIZE, size / YUZU_PAGESIZE, 0,
Common::PageType::Unmapped);
- if (Settings::IsFastmemEnabled()) {
- system.DeviceMemory().buffer.Unmap(GetInteger(base), size);
+ if (current_page_table->fastmem_arena) {
+ buffer->Unmap(GetInteger(base), size, separate_heap);
}
}
@@ -79,17 +95,7 @@ struct Memory::Impl {
ASSERT_MSG((size & YUZU_PAGEMASK) == 0, "non-page aligned size: {:016X}", size);
ASSERT_MSG((vaddr & YUZU_PAGEMASK) == 0, "non-page aligned base: {:016X}", vaddr);
- if (!Settings::IsFastmemEnabled()) {
- return;
- }
-
- const bool is_r = True(perms & Common::MemoryPermission::Read);
- const bool is_w = True(perms & Common::MemoryPermission::Write);
- const bool is_x =
- True(perms & Common::MemoryPermission::Execute) && Settings::IsNceEnabled();
-
- if (!current_page_table) {
- system.DeviceMemory().buffer.Protect(vaddr, size, is_r, is_w, is_x);
+ if (!current_page_table->fastmem_arena) {
return;
}
@@ -101,8 +107,7 @@ struct Memory::Impl {
switch (page_type) {
case Common::PageType::RasterizerCachedMemory:
if (protect_bytes > 0) {
- system.DeviceMemory().buffer.Protect(protect_begin, protect_bytes, is_r, is_w,
- is_x);
+ buffer->Protect(protect_begin, protect_bytes, perms);
protect_bytes = 0;
}
break;
@@ -115,7 +120,7 @@ struct Memory::Impl {
}
if (protect_bytes > 0) {
- system.DeviceMemory().buffer.Protect(protect_begin, protect_bytes, is_r, is_w, is_x);
+ buffer->Protect(protect_begin, protect_bytes, perms);
}
}
@@ -239,7 +244,7 @@ struct Memory::Impl {
bool WalkBlock(const Common::ProcessAddress addr, const std::size_t size, auto on_unmapped,
auto on_memory, auto on_rasterizer, auto increment) {
- const auto& page_table = system.ApplicationProcess()->GetPageTable().GetImpl();
+ const auto& page_table = *current_page_table;
std::size_t remaining_size = size;
std::size_t page_index = addr >> YUZU_PAGEBITS;
std::size_t page_offset = addr & YUZU_PAGEMASK;
@@ -484,8 +489,10 @@ struct Memory::Impl {
return;
}
- if (Settings::IsFastmemEnabled()) {
- system.DeviceMemory().buffer.Protect(vaddr, size, !debug, !debug);
+ if (current_page_table->fastmem_arena) {
+ const auto perm{debug ? Common::MemoryPermission{}
+ : Common::MemoryPermission::ReadWrite};
+ buffer->Protect(vaddr, size, perm);
}
// Iterate over a contiguous CPU address space, marking/unmarking the region.
@@ -541,10 +548,15 @@ struct Memory::Impl {
return;
}
- if (Settings::IsFastmemEnabled()) {
- const bool is_read_enable =
- !Settings::values.use_reactive_flushing.GetValue() || !cached;
- system.DeviceMemory().buffer.Protect(vaddr, size, is_read_enable, !cached);
+ if (current_page_table->fastmem_arena) {
+ Common::MemoryPermission perm{};
+ if (!Settings::values.use_reactive_flushing.GetValue() || !cached) {
+ perm |= Common::MemoryPermission::Read;
+ }
+ if (!cached) {
+ perm |= Common::MemoryPermission::Write;
+ }
+ buffer->Protect(vaddr, size, perm);
}
// Iterate over a contiguous CPU address space, which corresponds to the specified GPU
@@ -855,6 +867,13 @@ struct Memory::Impl {
std::array<GPUDirtyState, Core::Hardware::NUM_CPU_CORES> rasterizer_write_areas{};
std::span<Core::GPUDirtyMemoryManager> gpu_dirty_managers;
std::mutex sys_core_guard;
+
+ std::optional<Common::HeapTracker> heap_tracker;
+#ifdef __linux__
+ Common::HeapTracker* buffer{};
+#else
+ Common::HostMemory* buffer{};
+#endif
};
Memory::Memory(Core::System& system_) : system{system_} {
@@ -872,12 +891,14 @@ void Memory::SetCurrentPageTable(Kernel::KProcess& process) {
}
void Memory::MapMemoryRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
- Common::PhysicalAddress target, Common::MemoryPermission perms) {
- impl->MapMemoryRegion(page_table, base, size, target, perms);
+ Common::PhysicalAddress target, Common::MemoryPermission perms,
+ bool separate_heap) {
+ impl->MapMemoryRegion(page_table, base, size, target, perms, separate_heap);
}
-void Memory::UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size) {
- impl->UnmapRegion(page_table, base, size);
+void Memory::UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
+ bool separate_heap) {
+ impl->UnmapRegion(page_table, base, size, separate_heap);
}
void Memory::ProtectRegion(Common::PageTable& page_table, Common::ProcessAddress vaddr, u64 size,
@@ -886,8 +907,7 @@ void Memory::ProtectRegion(Common::PageTable& page_table, Common::ProcessAddress
}
bool Memory::IsValidVirtualAddress(const Common::ProcessAddress vaddr) const {
- const Kernel::KProcess& process = *system.ApplicationProcess();
- const auto& page_table = process.GetPageTable().GetImpl();
+ const auto& page_table = *impl->current_page_table;
const size_t page = vaddr >> YUZU_PAGEBITS;
if (page >= page_table.pointers.size()) {
return false;
@@ -1048,7 +1068,9 @@ void Memory::FlushRegion(Common::ProcessAddress dest_addr, size_t size) {
}
bool Memory::InvalidateNCE(Common::ProcessAddress vaddr, size_t size) {
- bool mapped = true;
+ [[maybe_unused]] bool mapped = true;
+ [[maybe_unused]] bool rasterizer = false;
+
u8* const ptr = impl->GetPointerImpl(
GetInteger(vaddr),
[&] {
@@ -1056,8 +1078,26 @@ bool Memory::InvalidateNCE(Common::ProcessAddress vaddr, size_t size) {
GetInteger(vaddr));
mapped = false;
},
- [&] { impl->system.GPU().InvalidateRegion(GetInteger(vaddr), size); });
+ [&] {
+ impl->system.GPU().InvalidateRegion(GetInteger(vaddr), size);
+ rasterizer = true;
+ });
+
+#ifdef __linux__
+ if (!rasterizer && mapped) {
+ impl->buffer->DeferredMapSeparateHeap(GetInteger(vaddr));
+ }
+#endif
+
return mapped && ptr != nullptr;
}
+bool Memory::InvalidateSeparateHeap(void* fault_address) {
+#ifdef __linux__
+ return impl->buffer->DeferredMapSeparateHeap(static_cast<u8*>(fault_address));
+#else
+ return false;
+#endif
+}
+
} // namespace Core::Memory
diff --git a/src/core/memory.h b/src/core/memory.h
index c1879e78f..dddfaf4a4 100644
--- a/src/core/memory.h
+++ b/src/core/memory.h
@@ -86,7 +86,8 @@ public:
* @param perms The permissions to map the memory with.
*/
void MapMemoryRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
- Common::PhysicalAddress target, Common::MemoryPermission perms);
+ Common::PhysicalAddress target, Common::MemoryPermission perms,
+ bool separate_heap);
/**
* Unmaps a region of the emulated process address space.
@@ -95,7 +96,8 @@ public:
* @param base The address to begin unmapping at.
* @param size The amount of bytes to unmap.
*/
- void UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size);
+ void UnmapRegion(Common::PageTable& page_table, Common::ProcessAddress base, u64 size,
+ bool separate_heap);
/**
* Protects a region of the emulated process address space with the new permissions.
@@ -486,6 +488,7 @@ public:
void SetGPUDirtyManagers(std::span<Core::GPUDirtyMemoryManager> managers);
void InvalidateRegion(Common::ProcessAddress dest_addr, size_t size);
bool InvalidateNCE(Common::ProcessAddress vaddr, size_t size);
+ bool InvalidateSeparateHeap(void* fault_address);
void FlushRegion(Common::ProcessAddress dest_addr, size_t size);
private:
@@ -683,7 +686,8 @@ public:
} else {
this->m_memory.WriteBlockUnsafe(this->m_addr, this->data(), this->size_bytes());
}
- } else if constexpr (FLAGS & GuestMemoryFlags::Safe) {
+ } else if constexpr ((FLAGS & GuestMemoryFlags::Safe) ||
+ (FLAGS & GuestMemoryFlags::Cached)) {
this->m_memory.InvalidateRegion(this->m_addr, this->size_bytes());
}
}
diff --git a/src/core/memory/cheat_engine.cpp b/src/core/memory/cheat_engine.cpp
index 3fc4024dc..7bc5b5ae5 100644
--- a/src/core/memory/cheat_engine.cpp
+++ b/src/core/memory/cheat_engine.cpp
@@ -190,15 +190,15 @@ CheatEngine::CheatEngine(System& system_, std::vector<CheatEntry> cheats_,
}
CheatEngine::~CheatEngine() {
- core_timing.UnscheduleEvent(event, 0);
+ core_timing.UnscheduleEvent(event);
}
void CheatEngine::Initialize() {
event = Core::Timing::CreateEvent(
"CheatEngine::FrameCallback::" + Common::HexToString(metadata.main_nso_build_id),
- [this](std::uintptr_t user_data, s64 time,
+ [this](s64 time,
std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
- FrameCallback(user_data, ns_late);
+ FrameCallback(ns_late);
return std::nullopt;
});
core_timing.ScheduleLoopingEvent(CHEAT_ENGINE_NS, CHEAT_ENGINE_NS, event);
@@ -239,7 +239,7 @@ void CheatEngine::Reload(std::vector<CheatEntry> reload_cheats) {
MICROPROFILE_DEFINE(Cheat_Engine, "Add-Ons", "Cheat Engine", MP_RGB(70, 200, 70));
-void CheatEngine::FrameCallback(std::uintptr_t, std::chrono::nanoseconds ns_late) {
+void CheatEngine::FrameCallback(std::chrono::nanoseconds ns_late) {
if (is_pending_reload.exchange(false)) {
vm.LoadProgram(cheats);
}
diff --git a/src/core/memory/cheat_engine.h b/src/core/memory/cheat_engine.h
index 284abdd28..ced2168d1 100644
--- a/src/core/memory/cheat_engine.h
+++ b/src/core/memory/cheat_engine.h
@@ -70,7 +70,7 @@ public:
void Reload(std::vector<CheatEntry> reload_cheats);
private:
- void FrameCallback(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
+ void FrameCallback(std::chrono::nanoseconds ns_late);
DmntCheatVm vm;
CheatProcessMetadata metadata;
diff --git a/src/core/tools/freezer.cpp b/src/core/tools/freezer.cpp
index 98ebbbf32..9d42c726e 100644
--- a/src/core/tools/freezer.cpp
+++ b/src/core/tools/freezer.cpp
@@ -51,18 +51,17 @@ void MemoryWriteWidth(Core::Memory::Memory& memory, u32 width, VAddr addr, u64 v
Freezer::Freezer(Core::Timing::CoreTiming& core_timing_, Core::Memory::Memory& memory_)
: core_timing{core_timing_}, memory{memory_} {
- event = Core::Timing::CreateEvent(
- "MemoryFreezer::FrameCallback",
- [this](std::uintptr_t user_data, s64 time,
- std::chrono::nanoseconds ns_late) -> std::optional<std::chrono::nanoseconds> {
- FrameCallback(user_data, ns_late);
- return std::nullopt;
- });
+ event = Core::Timing::CreateEvent("MemoryFreezer::FrameCallback",
+ [this](s64 time, std::chrono::nanoseconds ns_late)
+ -> std::optional<std::chrono::nanoseconds> {
+ FrameCallback(ns_late);
+ return std::nullopt;
+ });
core_timing.ScheduleEvent(memory_freezer_ns, event);
}
Freezer::~Freezer() {
- core_timing.UnscheduleEvent(event, 0);
+ core_timing.UnscheduleEvent(event);
}
void Freezer::SetActive(bool is_active) {
@@ -159,7 +158,7 @@ Freezer::Entries::const_iterator Freezer::FindEntry(VAddr address) const {
[address](const Entry& entry) { return entry.address == address; });
}
-void Freezer::FrameCallback(std::uintptr_t, std::chrono::nanoseconds ns_late) {
+void Freezer::FrameCallback(std::chrono::nanoseconds ns_late) {
if (!IsActive()) {
LOG_DEBUG(Common_Memory, "Memory freezer has been deactivated, ending callback events.");
return;
diff --git a/src/core/tools/freezer.h b/src/core/tools/freezer.h
index 0d6df5217..2efbc11f3 100644
--- a/src/core/tools/freezer.h
+++ b/src/core/tools/freezer.h
@@ -77,7 +77,7 @@ private:
Entries::iterator FindEntry(VAddr address);
Entries::const_iterator FindEntry(VAddr address) const;
- void FrameCallback(std::uintptr_t user_data, std::chrono::nanoseconds ns_late);
+ void FrameCallback(std::chrono::nanoseconds ns_late);
void FillEntryReads();
std::atomic_bool active{false};
diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp
index d9f99148b..20de91ff4 100644
--- a/src/frontend_common/config.cpp
+++ b/src/frontend_common/config.cpp
@@ -403,59 +403,63 @@ void Config::SavePlayerValues(const std::size_t player_index) {
// No custom profile selected
return;
}
- WriteSetting(std::string(player_prefix).append("profile_name"), player.profile_name,
- std::make_optional(std::string("")));
+ WriteStringSetting(std::string(player_prefix).append("profile_name"), player.profile_name,
+ std::make_optional(std::string("")));
}
- WriteSetting(std::string(player_prefix).append("type"), static_cast<u8>(player.controller_type),
- std::make_optional(static_cast<u8>(Settings::ControllerType::ProController)));
+ WriteIntegerSetting(
+ std::string(player_prefix).append("type"), static_cast<u8>(player.controller_type),
+ std::make_optional(static_cast<u8>(Settings::ControllerType::ProController)));
if (!player_prefix.empty() || !Settings::IsConfiguringGlobal()) {
- WriteSetting(std::string(player_prefix).append("connected"), player.connected,
- std::make_optional(player_index == 0));
- WriteSetting(std::string(player_prefix).append("vibration_enabled"),
- player.vibration_enabled, std::make_optional(true));
- WriteSetting(std::string(player_prefix).append("vibration_strength"),
- player.vibration_strength, std::make_optional(100));
- WriteSetting(std::string(player_prefix).append("body_color_left"), player.body_color_left,
- std::make_optional(Settings::JOYCON_BODY_NEON_BLUE));
- WriteSetting(std::string(player_prefix).append("body_color_right"), player.body_color_right,
- std::make_optional(Settings::JOYCON_BODY_NEON_RED));
- WriteSetting(std::string(player_prefix).append("button_color_left"),
- player.button_color_left,
- std::make_optional(Settings::JOYCON_BUTTONS_NEON_BLUE));
- WriteSetting(std::string(player_prefix).append("button_color_right"),
- player.button_color_right,
- std::make_optional(Settings::JOYCON_BUTTONS_NEON_RED));
+ WriteBooleanSetting(std::string(player_prefix).append("connected"), player.connected,
+ std::make_optional(player_index == 0));
+ WriteIntegerSetting(std::string(player_prefix).append("vibration_enabled"),
+ player.vibration_enabled, std::make_optional(true));
+ WriteIntegerSetting(std::string(player_prefix).append("vibration_strength"),
+ player.vibration_strength, std::make_optional(100));
+ WriteIntegerSetting(std::string(player_prefix).append("body_color_left"),
+ player.body_color_left,
+ std::make_optional(Settings::JOYCON_BODY_NEON_BLUE));
+ WriteIntegerSetting(std::string(player_prefix).append("body_color_right"),
+ player.body_color_right,
+ std::make_optional(Settings::JOYCON_BODY_NEON_RED));
+ WriteIntegerSetting(std::string(player_prefix).append("button_color_left"),
+ player.button_color_left,
+ std::make_optional(Settings::JOYCON_BUTTONS_NEON_BLUE));
+ WriteIntegerSetting(std::string(player_prefix).append("button_color_right"),
+ player.button_color_right,
+ std::make_optional(Settings::JOYCON_BUTTONS_NEON_RED));
}
}
void Config::SaveTouchscreenValues() {
const auto& touchscreen = Settings::values.touchscreen;
- WriteSetting(std::string("touchscreen_enabled"), touchscreen.enabled, std::make_optional(true));
+ WriteBooleanSetting(std::string("touchscreen_enabled"), touchscreen.enabled,
+ std::make_optional(true));
- WriteSetting(std::string("touchscreen_angle"), touchscreen.rotation_angle,
- std::make_optional(static_cast<u32>(0)));
- WriteSetting(std::string("touchscreen_diameter_x"), touchscreen.diameter_x,
- std::make_optional(static_cast<u32>(15)));
- WriteSetting(std::string("touchscreen_diameter_y"), touchscreen.diameter_y,
- std::make_optional(static_cast<u32>(15)));
+ WriteIntegerSetting(std::string("touchscreen_angle"), touchscreen.rotation_angle,
+ std::make_optional(static_cast<u32>(0)));
+ WriteIntegerSetting(std::string("touchscreen_diameter_x"), touchscreen.diameter_x,
+ std::make_optional(static_cast<u32>(15)));
+ WriteIntegerSetting(std::string("touchscreen_diameter_y"), touchscreen.diameter_y,
+ std::make_optional(static_cast<u32>(15)));
}
void Config::SaveMotionTouchValues() {
BeginArray(std::string("touch_from_button_maps"));
for (std::size_t p = 0; p < Settings::values.touch_from_button_maps.size(); ++p) {
SetArrayIndex(static_cast<int>(p));
- WriteSetting(std::string("name"), Settings::values.touch_from_button_maps[p].name,
- std::make_optional(std::string("default")));
+ WriteStringSetting(std::string("name"), Settings::values.touch_from_button_maps[p].name,
+ std::make_optional(std::string("default")));
BeginArray(std::string("entries"));
for (std::size_t q = 0; q < Settings::values.touch_from_button_maps[p].buttons.size();
++q) {
SetArrayIndex(static_cast<int>(q));
- WriteSetting(std::string("bind"),
- Settings::values.touch_from_button_maps[p].buttons[q]);
+ WriteStringSetting(std::string("bind"),
+ Settings::values.touch_from_button_maps[p].buttons[q]);
}
EndArray(); // entries
}
@@ -520,16 +524,16 @@ void Config::SaveCoreValues() {
void Config::SaveDataStorageValues() {
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
- WriteSetting(std::string("nand_directory"), FS::GetYuzuPathString(FS::YuzuPath::NANDDir),
- std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::NANDDir)));
- WriteSetting(std::string("sdmc_directory"), FS::GetYuzuPathString(FS::YuzuPath::SDMCDir),
- std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)));
- WriteSetting(std::string("load_directory"), FS::GetYuzuPathString(FS::YuzuPath::LoadDir),
- std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::LoadDir)));
- WriteSetting(std::string("dump_directory"), FS::GetYuzuPathString(FS::YuzuPath::DumpDir),
- std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::DumpDir)));
- WriteSetting(std::string("tas_directory"), FS::GetYuzuPathString(FS::YuzuPath::TASDir),
- std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::TASDir)));
+ WriteStringSetting(std::string("nand_directory"), FS::GetYuzuPathString(FS::YuzuPath::NANDDir),
+ std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::NANDDir)));
+ WriteStringSetting(std::string("sdmc_directory"), FS::GetYuzuPathString(FS::YuzuPath::SDMCDir),
+ std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)));
+ WriteStringSetting(std::string("load_directory"), FS::GetYuzuPathString(FS::YuzuPath::LoadDir),
+ std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::LoadDir)));
+ WriteStringSetting(std::string("dump_directory"), FS::GetYuzuPathString(FS::YuzuPath::DumpDir),
+ std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::DumpDir)));
+ WriteStringSetting(std::string("tas_directory"), FS::GetYuzuPathString(FS::YuzuPath::TASDir),
+ std::make_optional(FS::GetYuzuPathString(FS::YuzuPath::TASDir)));
WriteCategory(Settings::Category::DataStorage);
@@ -540,7 +544,7 @@ void Config::SaveDebuggingValues() {
BeginGroup(Settings::TranslateCategory(Settings::Category::Debugging));
// Intentionally not using the QT default setting as this is intended to be changed in the ini
- WriteSetting(std::string("record_frame_times"), Settings::values.record_frame_times);
+ WriteBooleanSetting(std::string("record_frame_times"), Settings::values.record_frame_times);
WriteCategory(Settings::Category::Debugging);
WriteCategory(Settings::Category::DebuggingGraphics);
@@ -564,11 +568,13 @@ void Config::SaveDisabledAddOnValues() {
BeginArray(std::string(""));
for (const auto& elem : Settings::values.disabled_addons) {
SetArrayIndex(i);
- WriteSetting(std::string("title_id"), elem.first, std::make_optional(static_cast<u64>(0)));
+ WriteIntegerSetting(std::string("title_id"), elem.first,
+ std::make_optional(static_cast<u64>(0)));
BeginArray(std::string("disabled"));
for (std::size_t j = 0; j < elem.second.size(); ++j) {
SetArrayIndex(static_cast<int>(j));
- WriteSetting(std::string("d"), elem.second[j], std::make_optional(std::string("")));
+ WriteStringSetting(std::string("d"), elem.second[j],
+ std::make_optional(std::string("")));
}
EndArray(); // disabled
++i;
@@ -609,8 +615,8 @@ void Config::SaveRendererValues() {
void Config::SaveScreenshotValues() {
BeginGroup(Settings::TranslateCategory(Settings::Category::Screenshots));
- WriteSetting(std::string("screenshot_path"),
- FS::GetYuzuPathString(FS::YuzuPath::ScreenshotsDir));
+ WriteStringSetting(std::string("screenshot_path"),
+ FS::GetYuzuPathString(FS::YuzuPath::ScreenshotsDir));
WriteCategory(Settings::Category::Screenshots);
EndGroup();
@@ -746,46 +752,59 @@ bool Config::Exists(const std::string& section, const std::string& key) const {
return !value.empty();
}
-template <typename Type>
-void Config::WriteSetting(const std::string& key, const Type& value,
- const std::optional<Type>& default_value,
- const std::optional<bool>& use_global) {
- std::string full_key = GetFullKey(key, false);
+void Config::WriteBooleanSetting(const std::string& key, const bool& value,
+ const std::optional<bool>& default_value,
+ const std::optional<bool>& use_global) {
+ std::optional<std::string> string_default = std::nullopt;
+ if (default_value.has_value()) {
+ string_default = std::make_optional(ToString(default_value.value()));
+ }
+ WritePreparedSetting(key, AdjustOutputString(ToString(value)), string_default, use_global);
+}
- std::string saved_value;
- std::string string_default;
- if constexpr (std::is_same_v<Type, std::string>) {
- saved_value.append(AdjustOutputString(value));
- if (default_value.has_value()) {
- string_default.append(AdjustOutputString(default_value.value()));
- }
- } else {
- saved_value.append(AdjustOutputString(ToString(value)));
- if (default_value.has_value()) {
- string_default.append(ToString(default_value.value()));
- }
+void Config::WriteDoubleSetting(const std::string& key, const double& value,
+ const std::optional<double>& default_value,
+ const std::optional<bool>& use_global) {
+ std::optional<std::string> string_default = std::nullopt;
+ if (default_value.has_value()) {
+ string_default = std::make_optional(ToString(default_value.value()));
}
+ WritePreparedSetting(key, AdjustOutputString(ToString(value)), string_default, use_global);
+}
- if (default_value.has_value() && use_global.has_value()) {
+void Config::WriteStringSetting(const std::string& key, const std::string& value,
+ const std::optional<std::string>& default_value,
+ const std::optional<bool>& use_global) {
+ std::optional string_default = default_value;
+ if (default_value.has_value()) {
+ string_default.value().append(AdjustOutputString(default_value.value()));
+ }
+ WritePreparedSetting(key, AdjustOutputString(value), string_default, use_global);
+}
+
+void Config::WritePreparedSetting(const std::string& key, const std::string& adjusted_value,
+ const std::optional<std::string>& adjusted_default_value,
+ const std::optional<bool>& use_global) {
+ std::string full_key = GetFullKey(key, false);
+ if (adjusted_default_value.has_value() && use_global.has_value()) {
if (!global) {
- WriteSettingInternal(std::string(full_key).append("\\global"),
- ToString(use_global.value()));
+ WriteString(std::string(full_key).append("\\global"), ToString(use_global.value()));
}
if (global || use_global.value() == false) {
- WriteSettingInternal(std::string(full_key).append("\\default"),
- ToString(string_default == saved_value));
- WriteSettingInternal(full_key, saved_value);
+ WriteString(std::string(full_key).append("\\default"),
+ ToString(adjusted_default_value == adjusted_value));
+ WriteString(full_key, adjusted_value);
}
- } else if (default_value.has_value() && !use_global.has_value()) {
- WriteSettingInternal(std::string(full_key).append("\\default"),
- ToString(string_default == saved_value));
- WriteSettingInternal(full_key, saved_value);
+ } else if (adjusted_default_value.has_value() && !use_global.has_value()) {
+ WriteString(std::string(full_key).append("\\default"),
+ ToString(adjusted_default_value == adjusted_value));
+ WriteString(full_key, adjusted_value);
} else {
- WriteSettingInternal(full_key, saved_value);
+ WriteString(full_key, adjusted_value);
}
}
-void Config::WriteSettingInternal(const std::string& key, const std::string& value) {
+void Config::WriteString(const std::string& key, const std::string& value) {
config->SetValue(GetSection().c_str(), key.c_str(), value.c_str());
}
@@ -861,17 +880,18 @@ void Config::WriteSettingGeneric(const Settings::BasicSetting* const setting) {
std::string key = AdjustKey(setting->GetLabel());
if (setting->Switchable()) {
if (!global) {
- WriteSetting(std::string(key).append("\\use_global"), setting->UsingGlobal());
+ WriteBooleanSetting(std::string(key).append("\\use_global"), setting->UsingGlobal());
}
if (global || !setting->UsingGlobal()) {
- WriteSetting(std::string(key).append("\\default"),
- setting->ToString() == setting->DefaultToString());
- WriteSetting(key, setting->ToString());
+ auto value = global ? setting->ToStringGlobal() : setting->ToString();
+ WriteBooleanSetting(std::string(key).append("\\default"),
+ value == setting->DefaultToString());
+ WriteStringSetting(key, value);
}
} else if (global) {
- WriteSetting(std::string(key).append("\\default"),
- setting->ToString() == setting->DefaultToString());
- WriteSetting(key, setting->ToString());
+ WriteBooleanSetting(std::string(key).append("\\default"),
+ setting->ToString() == setting->DefaultToString());
+ WriteStringSetting(key, setting->ToString());
}
}
diff --git a/src/frontend_common/config.h b/src/frontend_common/config.h
index b3812af17..b01631649 100644
--- a/src/frontend_common/config.h
+++ b/src/frontend_common/config.h
@@ -154,11 +154,26 @@ protected:
* @param use_global Specifies if the custom or global config should be in use, for custom
* configs
*/
- template <typename Type = int>
- void WriteSetting(const std::string& key, const Type& value,
- const std::optional<Type>& default_value = std::nullopt,
- const std::optional<bool>& use_global = std::nullopt);
- void WriteSettingInternal(const std::string& key, const std::string& value);
+ void WriteBooleanSetting(const std::string& key, const bool& value,
+ const std::optional<bool>& default_value = std::nullopt,
+ const std::optional<bool>& use_global = std::nullopt);
+ void WriteDoubleSetting(const std::string& key, const double& value,
+ const std::optional<double>& default_value = std::nullopt,
+ const std::optional<bool>& use_global = std::nullopt);
+ void WriteStringSetting(const std::string& key, const std::string& value,
+ const std::optional<std::string>& default_value = std::nullopt,
+ const std::optional<bool>& use_global = std::nullopt);
+ template <typename T>
+ std::enable_if_t<std::is_integral_v<T>> WriteIntegerSetting(
+ const std::string& key, const T& value,
+ const std::optional<T>& default_value = std::nullopt,
+ const std::optional<bool>& use_global = std::nullopt) {
+ std::optional<std::string> string_default = std::nullopt;
+ if (default_value.has_value()) {
+ string_default = std::make_optional(ToString(default_value.value()));
+ }
+ WritePreparedSetting(key, AdjustOutputString(ToString(value)), string_default, use_global);
+ }
void ReadCategory(Settings::Category category);
void WriteCategory(Settings::Category category);
@@ -175,8 +190,10 @@ protected:
return value_ ? "true" : "false";
} else if constexpr (std::is_same_v<T, u64>) {
return std::to_string(static_cast<u64>(value_));
- } else {
+ } else if constexpr (std::is_same_v<T, s64>) {
return std::to_string(static_cast<s64>(value_));
+ } else {
+ return std::to_string(value_);
}
}
@@ -197,9 +214,13 @@ protected:
const bool global;
private:
- inline static std::array<char, 19> special_characters = {'!', '#', '$', '%', '^', '&', '*',
- '|', ';', '\'', '\"', ',', '<', '.',
- '>', '?', '`', '~', '='};
+ void WritePreparedSetting(const std::string& key, const std::string& adjusted_value,
+ const std::optional<std::string>& adjusted_default_value,
+ const std::optional<bool>& use_global);
+ void WriteString(const std::string& key, const std::string& value);
+
+ inline static std::array<char, 18> special_characters = {
+ '!', '#', '$', '%', '^', '&', '*', '|', ';', '\'', '\"', ',', '<', '>', '?', '`', '~', '='};
struct ConfigArray {
std::string name;
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 e5a78a914..feca5105f 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
@@ -74,6 +74,11 @@ std::optional<OutAttr> OutputAttrPointer(EmitContext& ctx, IR::Attribute attr) {
case IR::Attribute::ClipDistance7: {
const u32 base{static_cast<u32>(IR::Attribute::ClipDistance0)};
const u32 index{static_cast<u32>(attr) - base};
+ if (index >= ctx.profile.max_user_clip_distances) {
+ LOG_WARNING(Shader, "Ignoring clip distance store {} >= {} supported", index,
+ ctx.profile.max_user_clip_distances);
+ return std::nullopt;
+ }
const Id clip_num{ctx.Const(index)};
return OutputAccessChain(ctx, ctx.output_f32, ctx.clip_distances, clip_num);
}
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
index 22ceca19c..800754554 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
@@ -214,16 +214,16 @@ Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, const IR::Value& ind
}
}
-Id Image(EmitContext& ctx, const IR::Value& index, IR::TextureInstInfo info) {
+std::pair<Id, bool> Image(EmitContext& ctx, const IR::Value& index, IR::TextureInstInfo info) {
if (!index.IsImmediate() || index.U32() != 0) {
throw NotImplementedException("Indirect image indexing");
}
if (info.type == TextureType::Buffer) {
const ImageBufferDefinition def{ctx.image_buffers.at(info.descriptor_index)};
- return ctx.OpLoad(def.image_type, def.id);
+ return {ctx.OpLoad(def.image_type, def.id), def.is_integer};
} else {
const ImageDefinition def{ctx.images.at(info.descriptor_index)};
- return ctx.OpLoad(def.image_type, def.id);
+ return {ctx.OpLoad(def.image_type, def.id), def.is_integer};
}
}
@@ -566,13 +566,23 @@ Id EmitImageRead(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id co
LOG_WARNING(Shader_SPIRV, "Typeless image read not supported by host");
return ctx.ConstantNull(ctx.U32[4]);
}
- return Emit(&EmitContext::OpImageSparseRead, &EmitContext::OpImageRead, ctx, inst, ctx.U32[4],
- Image(ctx, index, info), coords, std::nullopt, std::span<const Id>{});
+ const auto [image, is_integer] = Image(ctx, index, info);
+ const Id result_type{is_integer ? ctx.U32[4] : ctx.F32[4]};
+ Id color{Emit(&EmitContext::OpImageSparseRead, &EmitContext::OpImageRead, ctx, inst,
+ result_type, image, coords, std::nullopt, std::span<const Id>{})};
+ if (!is_integer) {
+ color = ctx.OpBitcast(ctx.U32[4], color);
+ }
+ return color;
}
void EmitImageWrite(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, Id color) {
const auto info{inst->Flags<IR::TextureInstInfo>()};
- ctx.OpImageWrite(Image(ctx, index, info), coords, color);
+ const auto [image, is_integer] = Image(ctx, index, info);
+ if (!is_integer) {
+ color = ctx.OpBitcast(ctx.F32[4], color);
+ }
+ ctx.OpImageWrite(image, coords, color);
}
Id EmitIsTextureScaled(EmitContext& ctx, const IR::Value& index) {
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
index eb3cc23cc..0442adc83 100644
--- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
+++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
@@ -74,20 +74,19 @@ spv::ImageFormat GetImageFormat(ImageFormat format) {
throw InvalidArgument("Invalid image format {}", format);
}
-Id ImageType(EmitContext& ctx, const ImageDescriptor& desc) {
+Id ImageType(EmitContext& ctx, const ImageDescriptor& desc, Id sampled_type) {
const spv::ImageFormat format{GetImageFormat(desc.format)};
- const Id type{ctx.U32[1]};
switch (desc.type) {
case TextureType::Color1D:
- return ctx.TypeImage(type, spv::Dim::Dim1D, false, false, false, 2, format);
+ return ctx.TypeImage(sampled_type, spv::Dim::Dim1D, false, false, false, 2, format);
case TextureType::ColorArray1D:
- return ctx.TypeImage(type, spv::Dim::Dim1D, false, true, false, 2, format);
+ return ctx.TypeImage(sampled_type, spv::Dim::Dim1D, false, true, false, 2, format);
case TextureType::Color2D:
- return ctx.TypeImage(type, spv::Dim::Dim2D, false, false, false, 2, format);
+ return ctx.TypeImage(sampled_type, spv::Dim::Dim2D, false, false, false, 2, format);
case TextureType::ColorArray2D:
- return ctx.TypeImage(type, spv::Dim::Dim2D, false, true, false, 2, format);
+ return ctx.TypeImage(sampled_type, spv::Dim::Dim2D, false, true, false, 2, format);
case TextureType::Color3D:
- return ctx.TypeImage(type, spv::Dim::Dim3D, false, false, false, 2, format);
+ return ctx.TypeImage(sampled_type, spv::Dim::Dim3D, false, false, false, 2, format);
case TextureType::Buffer:
throw NotImplementedException("Image buffer");
default:
@@ -97,9 +96,9 @@ Id ImageType(EmitContext& ctx, const ImageDescriptor& desc) {
}
Id DefineVariable(EmitContext& ctx, Id type, std::optional<spv::BuiltIn> builtin,
- spv::StorageClass storage_class) {
+ spv::StorageClass storage_class, std::optional<Id> initializer = std::nullopt) {
const Id pointer_type{ctx.TypePointer(storage_class, type)};
- const Id id{ctx.AddGlobalVariable(pointer_type, storage_class)};
+ const Id id{ctx.AddGlobalVariable(pointer_type, storage_class, initializer)};
if (builtin) {
ctx.Decorate(id, spv::Decoration::BuiltIn, *builtin);
}
@@ -145,11 +144,12 @@ Id DefineInput(EmitContext& ctx, Id type, bool per_invocation,
}
Id DefineOutput(EmitContext& ctx, Id type, std::optional<u32> invocations,
- std::optional<spv::BuiltIn> builtin = std::nullopt) {
+ std::optional<spv::BuiltIn> builtin = std::nullopt,
+ std::optional<Id> initializer = std::nullopt) {
if (invocations && ctx.stage == Stage::TessellationControl) {
type = ctx.TypeArray(type, ctx.Const(*invocations));
}
- return DefineVariable(ctx, type, builtin, spv::StorageClass::Output);
+ return DefineVariable(ctx, type, builtin, spv::StorageClass::Output, initializer);
}
void DefineGenericOutput(EmitContext& ctx, size_t index, std::optional<u32> invocations) {
@@ -812,10 +812,14 @@ void EmitContext::DefineAttributeMemAccess(const Info& info) {
labels.push_back(OpLabel());
}
if (info.stores.ClipDistances()) {
- literals.push_back(static_cast<u32>(IR::Attribute::ClipDistance0) >> 2);
- labels.push_back(OpLabel());
- literals.push_back(static_cast<u32>(IR::Attribute::ClipDistance4) >> 2);
- labels.push_back(OpLabel());
+ if (profile.max_user_clip_distances >= 4) {
+ literals.push_back(static_cast<u32>(IR::Attribute::ClipDistance0) >> 2);
+ labels.push_back(OpLabel());
+ }
+ if (profile.max_user_clip_distances >= 8) {
+ literals.push_back(static_cast<u32>(IR::Attribute::ClipDistance4) >> 2);
+ labels.push_back(OpLabel());
+ }
}
OpSelectionMerge(end_block, spv::SelectionControlMask::MaskNone);
OpSwitch(compare_index, default_label, literals, labels);
@@ -844,17 +848,21 @@ void EmitContext::DefineAttributeMemAccess(const Info& info) {
++label_index;
}
if (info.stores.ClipDistances()) {
- AddLabel(labels[label_index]);
- const Id pointer{OpAccessChain(output_f32, clip_distances, masked_index)};
- OpStore(pointer, store_value);
- OpReturn();
- ++label_index;
- AddLabel(labels[label_index]);
- const Id fixed_index{OpIAdd(U32[1], masked_index, Const(4U))};
- const Id pointer2{OpAccessChain(output_f32, clip_distances, fixed_index)};
- OpStore(pointer2, store_value);
- OpReturn();
- ++label_index;
+ if (profile.max_user_clip_distances >= 4) {
+ AddLabel(labels[label_index]);
+ const Id pointer{OpAccessChain(output_f32, clip_distances, masked_index)};
+ OpStore(pointer, store_value);
+ OpReturn();
+ ++label_index;
+ }
+ if (profile.max_user_clip_distances >= 8) {
+ AddLabel(labels[label_index]);
+ const Id fixed_index{OpIAdd(U32[1], masked_index, Const(4U))};
+ const Id pointer{OpAccessChain(output_f32, clip_distances, fixed_index)};
+ OpStore(pointer, store_value);
+ OpReturn();
+ ++label_index;
+ }
}
AddLabel(end_block);
OpUnreachable();
@@ -1273,7 +1281,9 @@ void EmitContext::DefineImageBuffers(const Info& info, u32& binding) {
throw NotImplementedException("Array of image buffers");
}
const spv::ImageFormat format{GetImageFormat(desc.format)};
- const Id image_type{TypeImage(U32[1], spv::Dim::Buffer, false, false, false, 2, format)};
+ const Id sampled_type{desc.is_integer ? U32[1] : F32[1]};
+ const Id image_type{
+ TypeImage(sampled_type, spv::Dim::Buffer, false, false, false, 2, format)};
const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)};
const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)};
Decorate(id, spv::Decoration::Binding, binding);
@@ -1283,6 +1293,7 @@ void EmitContext::DefineImageBuffers(const Info& info, u32& binding) {
.id = id,
.image_type = image_type,
.count = desc.count,
+ .is_integer = desc.is_integer,
});
if (profile.supported_spirv >= 0x00010400) {
interfaces.push_back(id);
@@ -1327,7 +1338,8 @@ void EmitContext::DefineImages(const Info& info, u32& binding, u32& scaling_inde
if (desc.count != 1) {
throw NotImplementedException("Array of images");
}
- const Id image_type{ImageType(*this, desc)};
+ const Id sampled_type{desc.is_integer ? U32[1] : F32[1]};
+ const Id image_type{ImageType(*this, desc, sampled_type)};
const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)};
const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)};
Decorate(id, spv::Decoration::Binding, binding);
@@ -1337,6 +1349,7 @@ void EmitContext::DefineImages(const Info& info, u32& binding, u32& scaling_inde
.id = id,
.image_type = image_type,
.count = desc.count,
+ .is_integer = desc.is_integer,
});
if (profile.supported_spirv >= 0x00010400) {
interfaces.push_back(id);
@@ -1528,8 +1541,16 @@ void EmitContext::DefineOutputs(const IR::Program& program) {
if (stage == Stage::Fragment) {
throw NotImplementedException("Storing ClipDistance in fragment stage");
}
- const Id type{TypeArray(F32[1], Const(8U))};
- clip_distances = DefineOutput(*this, type, invocations, spv::BuiltIn::ClipDistance);
+ if (profile.max_user_clip_distances > 0) {
+ const u32 used{std::min(profile.max_user_clip_distances, 8u)};
+ const std::array<Id, 8> zero{f32_zero_value, f32_zero_value, f32_zero_value,
+ f32_zero_value, f32_zero_value, f32_zero_value,
+ f32_zero_value, f32_zero_value};
+ const Id type{TypeArray(F32[1], Const(used))};
+ const Id initializer{ConstantComposite(type, std::span(zero).subspan(0, used))};
+ clip_distances =
+ DefineOutput(*this, type, invocations, spv::BuiltIn::ClipDistance, initializer);
+ }
}
if (info.stores[IR::Attribute::Layer] &&
(profile.support_viewport_index_layer_non_geometry || stage == Stage::Geometry)) {
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.h b/src/shader_recompiler/backend/spirv/spirv_emit_context.h
index 1aa79863d..56019ad89 100644
--- a/src/shader_recompiler/backend/spirv/spirv_emit_context.h
+++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.h
@@ -47,12 +47,14 @@ struct ImageBufferDefinition {
Id id;
Id image_type;
u32 count;
+ bool is_integer;
};
struct ImageDefinition {
Id id;
Id image_type;
u32 count;
+ bool is_integer;
};
struct UniformDefinitions {
diff --git a/src/shader_recompiler/environment.h b/src/shader_recompiler/environment.h
index 15285ab0a..e30bf094a 100644
--- a/src/shader_recompiler/environment.h
+++ b/src/shader_recompiler/environment.h
@@ -24,6 +24,8 @@ public:
[[nodiscard]] virtual TexturePixelFormat ReadTexturePixelFormat(u32 raw_handle) = 0;
+ [[nodiscard]] virtual bool IsTexturePixelFormatInteger(u32 raw_handle) = 0;
+
[[nodiscard]] virtual u32 ReadViewportTransformState() = 0;
[[nodiscard]] virtual u32 TextureBoundBuffer() const = 0;
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 70292686f..cb82a326c 100644
--- a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
+++ b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
@@ -913,7 +913,11 @@ void GatherInfoFromHeader(Environment& env, Info& info) {
}
for (size_t index = 0; index < 8; ++index) {
const u16 mask{header.vtg.omap_systemc.clip_distances};
- info.stores.Set(IR::Attribute::ClipDistance0 + index, ((mask >> index) & 1) != 0);
+ const bool used{((mask >> index) & 1) != 0};
+ info.stores.Set(IR::Attribute::ClipDistance0 + index, used);
+ if (used) {
+ info.used_clip_distances = static_cast<u32>(index) + 1;
+ }
}
info.stores.Set(IR::Attribute::PrimitiveId,
header.vtg.omap_systemb.primitive_array_id != 0);
diff --git a/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp b/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
index ec12c843a..e4a73a360 100644
--- a/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
+++ b/src/shader_recompiler/ir_opt/constant_propagation_pass.cpp
@@ -815,6 +815,15 @@ bool FindGradient3DDerivatives(std::array<IR::Value, 3>& results, IR::Value coor
return true;
}
+void ConvertDerivatives(std::array<IR::Value, 3>& results, IR::IREmitter& ir) {
+ for (size_t i = 0; i < 3; i++) {
+ if (results[i].Type() == IR::Type::U32) {
+ results[i] = results[i].IsImmediate() ? ir.Imm32(Common::BitCast<f32>(results[i].U32()))
+ : ir.BitCast<IR::F32>(IR::U32(results[i]));
+ }
+ }
+}
+
void FoldImageSampleImplicitLod(IR::Block& block, IR::Inst& inst) {
IR::TextureInstInfo info = inst.Flags<IR::TextureInstInfo>();
auto orig_opcode = inst.GetOpcode();
@@ -831,12 +840,14 @@ void FoldImageSampleImplicitLod(IR::Block& block, IR::Inst& inst) {
if (!offset.IsImmediate()) {
return;
}
+ IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)};
IR::Inst* const inst2 = coords.InstRecursive();
std::array<std::array<IR::Value, 3>, 3> results_matrix;
for (size_t i = 0; i < 3; i++) {
if (!FindGradient3DDerivatives(results_matrix[i], inst2->Arg(i).Resolve())) {
return;
}
+ ConvertDerivatives(results_matrix[i], ir);
}
IR::F32 lod_clamp{};
if (info.has_lod_clamp != 0) {
@@ -846,7 +857,6 @@ void FoldImageSampleImplicitLod(IR::Block& block, IR::Inst& inst) {
lod_clamp = IR::F32{bias_lc};
}
}
- IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)};
IR::Value new_coords =
ir.CompositeConstruct(results_matrix[0][0], results_matrix[1][0], results_matrix[2][0]);
IR::Value derivatives_1 = ir.CompositeConstruct(results_matrix[0][1], results_matrix[0][2],
diff --git a/src/shader_recompiler/ir_opt/texture_pass.cpp b/src/shader_recompiler/ir_opt/texture_pass.cpp
index d374c976a..100437f0e 100644
--- a/src/shader_recompiler/ir_opt/texture_pass.cpp
+++ b/src/shader_recompiler/ir_opt/texture_pass.cpp
@@ -372,6 +372,10 @@ TexturePixelFormat ReadTexturePixelFormat(Environment& env, const ConstBufferAdd
return env.ReadTexturePixelFormat(GetTextureHandle(env, cbuf));
}
+bool IsTexturePixelFormatInteger(Environment& env, const ConstBufferAddr& cbuf) {
+ return env.IsTexturePixelFormatInteger(GetTextureHandle(env, cbuf));
+}
+
class Descriptors {
public:
explicit Descriptors(TextureBufferDescriptors& texture_buffer_descriptors_,
@@ -403,6 +407,7 @@ public:
})};
image_buffer_descriptors[index].is_written |= desc.is_written;
image_buffer_descriptors[index].is_read |= desc.is_read;
+ image_buffer_descriptors[index].is_integer |= desc.is_integer;
return index;
}
@@ -432,6 +437,7 @@ public:
})};
image_descriptors[index].is_written |= desc.is_written;
image_descriptors[index].is_read |= desc.is_read;
+ image_descriptors[index].is_integer |= desc.is_integer;
return index;
}
@@ -469,6 +475,20 @@ void PatchImageSampleImplicitLod(IR::Block& block, IR::Inst& inst) {
ir.FPRecip(ir.ConvertUToF(32, 32, ir.CompositeExtract(texture_size, 1))))));
}
+bool IsPixelFormatSNorm(TexturePixelFormat pixel_format) {
+ switch (pixel_format) {
+ case TexturePixelFormat::A8B8G8R8_SNORM:
+ case TexturePixelFormat::R8G8_SNORM:
+ case TexturePixelFormat::R8_SNORM:
+ case TexturePixelFormat::R16G16B16A16_SNORM:
+ case TexturePixelFormat::R16G16_SNORM:
+ case TexturePixelFormat::R16_SNORM:
+ return true;
+ default:
+ return false;
+ }
+}
+
void PatchTexelFetch(IR::Block& block, IR::Inst& inst, TexturePixelFormat pixel_format) {
const auto it{IR::Block::InstructionList::s_iterator_to(inst)};
IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)};
@@ -587,11 +607,13 @@ void TexturePass(Environment& env, IR::Program& program, const HostTranslateInfo
}
const bool is_written{inst->GetOpcode() != IR::Opcode::ImageRead};
const bool is_read{inst->GetOpcode() != IR::Opcode::ImageWrite};
+ const bool is_integer{IsTexturePixelFormatInteger(env, cbuf)};
if (flags.type == TextureType::Buffer) {
index = descriptors.Add(ImageBufferDescriptor{
.format = flags.image_format,
.is_written = is_written,
.is_read = is_read,
+ .is_integer = is_integer,
.cbuf_index = cbuf.index,
.cbuf_offset = cbuf.offset,
.count = cbuf.count,
@@ -603,6 +625,7 @@ void TexturePass(Environment& env, IR::Program& program, const HostTranslateInfo
.format = flags.image_format,
.is_written = is_written,
.is_read = is_read,
+ .is_integer = is_integer,
.cbuf_index = cbuf.index,
.cbuf_offset = cbuf.offset,
.count = cbuf.count,
@@ -658,7 +681,7 @@ void TexturePass(Environment& env, IR::Program& program, const HostTranslateInfo
if (!host_info.support_snorm_render_buffer && inst->GetOpcode() == IR::Opcode::ImageFetch &&
flags.type == TextureType::Buffer) {
const auto pixel_format = ReadTexturePixelFormat(env, cbuf);
- if (pixel_format != TexturePixelFormat::OTHER) {
+ if (IsPixelFormatSNorm(pixel_format)) {
PatchTexelFetch(*texture_inst.block, *texture_inst.inst, pixel_format);
}
}
diff --git a/src/shader_recompiler/profile.h b/src/shader_recompiler/profile.h
index 66901a965..7578d41cc 100644
--- a/src/shader_recompiler/profile.h
+++ b/src/shader_recompiler/profile.h
@@ -87,6 +87,8 @@ struct Profile {
bool has_broken_robust{};
u64 min_ssbo_alignment{};
+
+ u32 max_user_clip_distances{};
};
} // namespace Shader
diff --git a/src/shader_recompiler/shader_info.h b/src/shader_recompiler/shader_info.h
index b4b4afd37..ed13e6820 100644
--- a/src/shader_recompiler/shader_info.h
+++ b/src/shader_recompiler/shader_info.h
@@ -35,14 +35,109 @@ enum class TextureType : u32 {
};
constexpr u32 NUM_TEXTURE_TYPES = 9;
-enum class TexturePixelFormat : u32 {
+enum class TexturePixelFormat {
+ A8B8G8R8_UNORM,
A8B8G8R8_SNORM,
+ A8B8G8R8_SINT,
+ A8B8G8R8_UINT,
+ R5G6B5_UNORM,
+ B5G6R5_UNORM,
+ A1R5G5B5_UNORM,
+ A2B10G10R10_UNORM,
+ A2B10G10R10_UINT,
+ A2R10G10B10_UNORM,
+ A1B5G5R5_UNORM,
+ A5B5G5R1_UNORM,
+ R8_UNORM,
R8_SNORM,
- R8G8_SNORM,
+ R8_SINT,
+ R8_UINT,
+ R16G16B16A16_FLOAT,
+ R16G16B16A16_UNORM,
R16G16B16A16_SNORM,
- R16G16_SNORM,
+ R16G16B16A16_SINT,
+ R16G16B16A16_UINT,
+ B10G11R11_FLOAT,
+ R32G32B32A32_UINT,
+ BC1_RGBA_UNORM,
+ BC2_UNORM,
+ BC3_UNORM,
+ BC4_UNORM,
+ BC4_SNORM,
+ BC5_UNORM,
+ BC5_SNORM,
+ BC7_UNORM,
+ BC6H_UFLOAT,
+ BC6H_SFLOAT,
+ ASTC_2D_4X4_UNORM,
+ B8G8R8A8_UNORM,
+ R32G32B32A32_FLOAT,
+ R32G32B32A32_SINT,
+ R32G32_FLOAT,
+ R32G32_SINT,
+ R32_FLOAT,
+ R16_FLOAT,
+ R16_UNORM,
R16_SNORM,
- OTHER
+ R16_UINT,
+ R16_SINT,
+ R16G16_UNORM,
+ R16G16_FLOAT,
+ R16G16_UINT,
+ R16G16_SINT,
+ R16G16_SNORM,
+ R32G32B32_FLOAT,
+ A8B8G8R8_SRGB,
+ R8G8_UNORM,
+ R8G8_SNORM,
+ R8G8_SINT,
+ R8G8_UINT,
+ R32G32_UINT,
+ R16G16B16X16_FLOAT,
+ R32_UINT,
+ R32_SINT,
+ ASTC_2D_8X8_UNORM,
+ ASTC_2D_8X5_UNORM,
+ ASTC_2D_5X4_UNORM,
+ B8G8R8A8_SRGB,
+ BC1_RGBA_SRGB,
+ BC2_SRGB,
+ BC3_SRGB,
+ BC7_SRGB,
+ A4B4G4R4_UNORM,
+ G4R4_UNORM,
+ ASTC_2D_4X4_SRGB,
+ ASTC_2D_8X8_SRGB,
+ ASTC_2D_8X5_SRGB,
+ ASTC_2D_5X4_SRGB,
+ ASTC_2D_5X5_UNORM,
+ ASTC_2D_5X5_SRGB,
+ ASTC_2D_10X8_UNORM,
+ ASTC_2D_10X8_SRGB,
+ ASTC_2D_6X6_UNORM,
+ ASTC_2D_6X6_SRGB,
+ ASTC_2D_10X6_UNORM,
+ ASTC_2D_10X6_SRGB,
+ ASTC_2D_10X5_UNORM,
+ ASTC_2D_10X5_SRGB,
+ ASTC_2D_10X10_UNORM,
+ ASTC_2D_10X10_SRGB,
+ ASTC_2D_12X10_UNORM,
+ ASTC_2D_12X10_SRGB,
+ ASTC_2D_12X12_UNORM,
+ ASTC_2D_12X12_SRGB,
+ ASTC_2D_8X6_UNORM,
+ ASTC_2D_8X6_SRGB,
+ ASTC_2D_6X5_UNORM,
+ ASTC_2D_6X5_SRGB,
+ E5B9G9R9_FLOAT,
+ D32_FLOAT,
+ D16_UNORM,
+ X8_D24_UNORM,
+ S8_UINT,
+ D24_UNORM_S8_UINT,
+ S8_UINT_D24_UNORM,
+ D32_FLOAT_S8_UINT,
};
enum class ImageFormat : u32 {
@@ -97,6 +192,7 @@ struct ImageBufferDescriptor {
ImageFormat format;
bool is_written;
bool is_read;
+ bool is_integer;
u32 cbuf_index;
u32 cbuf_offset;
u32 count;
@@ -129,6 +225,7 @@ struct ImageDescriptor {
ImageFormat format;
bool is_written;
bool is_read;
+ bool is_integer;
u32 cbuf_index;
u32 cbuf_offset;
u32 count;
@@ -227,6 +324,8 @@ struct Info {
bool requires_layer_emulation{};
IR::Attribute emulated_layer{};
+ u32 used_clip_distances{};
+
boost::container::static_vector<ConstantBufferDescriptor, MAX_CBUFS>
constant_buffer_descriptors;
boost::container::static_vector<StorageBufferDescriptor, MAX_SSBOS> storage_buffers_descriptors;
diff --git a/src/tests/common/host_memory.cpp b/src/tests/common/host_memory.cpp
index 1a28e862b..cb040c942 100644
--- a/src/tests/common/host_memory.cpp
+++ b/src/tests/common/host_memory.cpp
@@ -12,6 +12,7 @@ using namespace Common::Literals;
static constexpr size_t VIRTUAL_SIZE = 1ULL << 39;
static constexpr size_t BACKING_SIZE = 4_GiB;
static constexpr auto PERMS = Common::MemoryPermission::ReadWrite;
+static constexpr auto HEAP = false;
TEST_CASE("HostMemory: Initialize and deinitialize", "[common]") {
{ HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE); }
@@ -20,7 +21,7 @@ TEST_CASE("HostMemory: Initialize and deinitialize", "[common]") {
TEST_CASE("HostMemory: Simple map", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x5000, 0x8000, 0x1000, PERMS);
+ mem.Map(0x5000, 0x8000, 0x1000, PERMS, HEAP);
volatile u8* const data = mem.VirtualBasePointer() + 0x5000;
data[0] = 50;
@@ -29,8 +30,8 @@ TEST_CASE("HostMemory: Simple map", "[common]") {
TEST_CASE("HostMemory: Simple mirror map", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x5000, 0x3000, 0x2000, PERMS);
- mem.Map(0x8000, 0x4000, 0x1000, PERMS);
+ mem.Map(0x5000, 0x3000, 0x2000, PERMS, HEAP);
+ mem.Map(0x8000, 0x4000, 0x1000, PERMS, HEAP);
volatile u8* const mirror_a = mem.VirtualBasePointer() + 0x5000;
volatile u8* const mirror_b = mem.VirtualBasePointer() + 0x8000;
@@ -40,116 +41,116 @@ TEST_CASE("HostMemory: Simple mirror map", "[common]") {
TEST_CASE("HostMemory: Simple unmap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x5000, 0x3000, 0x2000, PERMS);
+ mem.Map(0x5000, 0x3000, 0x2000, PERMS, HEAP);
volatile u8* const data = mem.VirtualBasePointer() + 0x5000;
data[75] = 50;
REQUIRE(data[75] == 50);
- mem.Unmap(0x5000, 0x2000);
+ mem.Unmap(0x5000, 0x2000, HEAP);
}
TEST_CASE("HostMemory: Simple unmap and remap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x5000, 0x3000, 0x2000, PERMS);
+ mem.Map(0x5000, 0x3000, 0x2000, PERMS, HEAP);
volatile u8* const data = mem.VirtualBasePointer() + 0x5000;
data[0] = 50;
REQUIRE(data[0] == 50);
- mem.Unmap(0x5000, 0x2000);
+ mem.Unmap(0x5000, 0x2000, HEAP);
- mem.Map(0x5000, 0x3000, 0x2000, PERMS);
+ mem.Map(0x5000, 0x3000, 0x2000, PERMS, HEAP);
REQUIRE(data[0] == 50);
- mem.Map(0x7000, 0x2000, 0x5000, PERMS);
+ mem.Map(0x7000, 0x2000, 0x5000, PERMS, HEAP);
REQUIRE(data[0x3000] == 50);
}
TEST_CASE("HostMemory: Nieche allocation", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x0000, 0, 0x20000, PERMS);
- mem.Unmap(0x0000, 0x4000);
- mem.Map(0x1000, 0, 0x2000, PERMS);
- mem.Map(0x3000, 0, 0x1000, PERMS);
- mem.Map(0, 0, 0x1000, PERMS);
+ mem.Map(0x0000, 0, 0x20000, PERMS, HEAP);
+ mem.Unmap(0x0000, 0x4000, HEAP);
+ mem.Map(0x1000, 0, 0x2000, PERMS, HEAP);
+ mem.Map(0x3000, 0, 0x1000, PERMS, HEAP);
+ mem.Map(0, 0, 0x1000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Full unmap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x8000, 0, 0x4000, PERMS);
- mem.Unmap(0x8000, 0x4000);
- mem.Map(0x6000, 0, 0x16000, PERMS);
+ mem.Map(0x8000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x8000, 0x4000, HEAP);
+ mem.Map(0x6000, 0, 0x16000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Right out of bounds unmap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x0000, 0, 0x4000, PERMS);
- mem.Unmap(0x2000, 0x4000);
- mem.Map(0x2000, 0x80000, 0x4000, PERMS);
+ mem.Map(0x0000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x2000, 0x4000, HEAP);
+ mem.Map(0x2000, 0x80000, 0x4000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Left out of bounds unmap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x8000, 0, 0x4000, PERMS);
- mem.Unmap(0x6000, 0x4000);
- mem.Map(0x8000, 0, 0x2000, PERMS);
+ mem.Map(0x8000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x6000, 0x4000, HEAP);
+ mem.Map(0x8000, 0, 0x2000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Multiple placeholder unmap", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x0000, 0, 0x4000, PERMS);
- mem.Map(0x4000, 0, 0x1b000, PERMS);
- mem.Unmap(0x3000, 0x1c000);
- mem.Map(0x3000, 0, 0x20000, PERMS);
+ mem.Map(0x0000, 0, 0x4000, PERMS, HEAP);
+ mem.Map(0x4000, 0, 0x1b000, PERMS, HEAP);
+ mem.Unmap(0x3000, 0x1c000, HEAP);
+ mem.Map(0x3000, 0, 0x20000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Unmap between placeholders", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x0000, 0, 0x4000, PERMS);
- mem.Map(0x4000, 0, 0x4000, PERMS);
- mem.Unmap(0x2000, 0x4000);
- mem.Map(0x2000, 0, 0x4000, PERMS);
+ mem.Map(0x0000, 0, 0x4000, PERMS, HEAP);
+ mem.Map(0x4000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x2000, 0x4000, HEAP);
+ mem.Map(0x2000, 0, 0x4000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Unmap to origin", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0, 0x4000, PERMS);
- mem.Map(0x8000, 0, 0x4000, PERMS);
- mem.Unmap(0x4000, 0x4000);
- mem.Map(0, 0, 0x4000, PERMS);
- mem.Map(0x4000, 0, 0x4000, PERMS);
+ mem.Map(0x4000, 0, 0x4000, PERMS, HEAP);
+ mem.Map(0x8000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x4000, 0x4000, HEAP);
+ mem.Map(0, 0, 0x4000, PERMS, HEAP);
+ mem.Map(0x4000, 0, 0x4000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Unmap to right", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0, 0x4000, PERMS);
- mem.Map(0x8000, 0, 0x4000, PERMS);
- mem.Unmap(0x8000, 0x4000);
- mem.Map(0x8000, 0, 0x4000, PERMS);
+ mem.Map(0x4000, 0, 0x4000, PERMS, HEAP);
+ mem.Map(0x8000, 0, 0x4000, PERMS, HEAP);
+ mem.Unmap(0x8000, 0x4000, HEAP);
+ mem.Map(0x8000, 0, 0x4000, PERMS, HEAP);
}
TEST_CASE("HostMemory: Partial right unmap check bindings", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0x10000, 0x4000, PERMS);
+ mem.Map(0x4000, 0x10000, 0x4000, PERMS, HEAP);
volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000;
ptr[0x1000] = 17;
- mem.Unmap(0x6000, 0x2000);
+ mem.Unmap(0x6000, 0x2000, HEAP);
REQUIRE(ptr[0x1000] == 17);
}
TEST_CASE("HostMemory: Partial left unmap check bindings", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0x10000, 0x4000, PERMS);
+ mem.Map(0x4000, 0x10000, 0x4000, PERMS, HEAP);
volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000;
ptr[0x3000] = 19;
ptr[0x3fff] = 12;
- mem.Unmap(0x4000, 0x2000);
+ mem.Unmap(0x4000, 0x2000, HEAP);
REQUIRE(ptr[0x3000] == 19);
REQUIRE(ptr[0x3fff] == 12);
@@ -157,13 +158,13 @@ TEST_CASE("HostMemory: Partial left unmap check bindings", "[common]") {
TEST_CASE("HostMemory: Partial middle unmap check bindings", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0x10000, 0x4000, PERMS);
+ mem.Map(0x4000, 0x10000, 0x4000, PERMS, HEAP);
volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000;
ptr[0x0000] = 19;
ptr[0x3fff] = 12;
- mem.Unmap(0x1000, 0x2000);
+ mem.Unmap(0x1000, 0x2000, HEAP);
REQUIRE(ptr[0x0000] == 19);
REQUIRE(ptr[0x3fff] == 12);
@@ -171,14 +172,14 @@ TEST_CASE("HostMemory: Partial middle unmap check bindings", "[common]") {
TEST_CASE("HostMemory: Partial sparse middle unmap and check bindings", "[common]") {
HostMemory mem(BACKING_SIZE, VIRTUAL_SIZE);
- mem.Map(0x4000, 0x10000, 0x2000, PERMS);
- mem.Map(0x6000, 0x20000, 0x2000, PERMS);
+ mem.Map(0x4000, 0x10000, 0x2000, PERMS, HEAP);
+ mem.Map(0x6000, 0x20000, 0x2000, PERMS, HEAP);
volatile u8* const ptr = mem.VirtualBasePointer() + 0x4000;
ptr[0x0000] = 19;
ptr[0x3fff] = 12;
- mem.Unmap(0x5000, 0x2000);
+ mem.Unmap(0x5000, 0x2000, HEAP);
REQUIRE(ptr[0x0000] == 19);
REQUIRE(ptr[0x3fff] == 12);
diff --git a/src/tests/core/core_timing.cpp b/src/tests/core/core_timing.cpp
index f08afbf9a..81898a1d3 100644
--- a/src/tests/core/core_timing.cpp
+++ b/src/tests/core/core_timing.cpp
@@ -16,20 +16,16 @@
namespace {
// Numbers are chosen randomly to make sure the correct one is given.
-constexpr std::array<u64, 5> CB_IDS{{42, 144, 93, 1026, UINT64_C(0xFFFF7FFFF7FFFF)}};
constexpr std::array<u64, 5> calls_order{{2, 0, 1, 4, 3}};
std::array<s64, 5> delays{};
-
-std::bitset<CB_IDS.size()> callbacks_ran_flags;
+std::bitset<5> callbacks_ran_flags;
u64 expected_callback = 0;
template <unsigned int IDX>
-std::optional<std::chrono::nanoseconds> HostCallbackTemplate(std::uintptr_t user_data, s64 time,
+std::optional<std::chrono::nanoseconds> HostCallbackTemplate(s64 time,
std::chrono::nanoseconds ns_late) {
- static_assert(IDX < CB_IDS.size(), "IDX out of range");
+ static_assert(IDX < callbacks_ran_flags.size(), "IDX out of range");
callbacks_ran_flags.set(IDX);
- REQUIRE(CB_IDS[IDX] == user_data);
- REQUIRE(CB_IDS[IDX] == CB_IDS[calls_order[expected_callback]]);
delays[IDX] = ns_late.count();
++expected_callback;
return std::nullopt;
@@ -76,7 +72,7 @@ TEST_CASE("CoreTiming[BasicOrder]", "[core]") {
const u64 order = calls_order[i];
const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
- core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]);
+ core_timing.ScheduleEvent(future_ns, events[order]);
}
/// test pause
REQUIRE(callbacks_ran_flags.none());
@@ -118,7 +114,7 @@ TEST_CASE("CoreTiming[BasicOrderNoPausing]", "[core]") {
for (std::size_t i = 0; i < events.size(); i++) {
const u64 order = calls_order[i];
const auto future_ns = std::chrono::nanoseconds{static_cast<s64>(i * one_micro + 100)};
- core_timing.ScheduleEvent(future_ns, events[order], CB_IDS[order]);
+ core_timing.ScheduleEvent(future_ns, events[order]);
}
const u64 end = core_timing.GetGlobalTimeNs().count();
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 592c28ba3..95ba4f76c 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -586,14 +586,22 @@ void Maxwell3D::ProcessQueryCondition() {
}
void Maxwell3D::ProcessCounterReset() {
- switch (regs.clear_report_value) {
- case Regs::ClearReport::ZPassPixelCount:
- rasterizer->ResetCounter(VideoCommon::QueryType::ZPassPixelCount64);
- break;
- default:
- LOG_DEBUG(Render_OpenGL, "Unimplemented counter reset={}", regs.clear_report_value);
- break;
- }
+ const auto query_type = [clear_report = regs.clear_report_value]() {
+ switch (clear_report) {
+ case Tegra::Engines::Maxwell3D::Regs::ClearReport::ZPassPixelCount:
+ return VideoCommon::QueryType::ZPassPixelCount64;
+ case Tegra::Engines::Maxwell3D::Regs::ClearReport::StreamingPrimitivesSucceeded:
+ return VideoCommon::QueryType::StreamingPrimitivesSucceeded;
+ case Tegra::Engines::Maxwell3D::Regs::ClearReport::PrimitivesGenerated:
+ return VideoCommon::QueryType::PrimitivesGenerated;
+ case Tegra::Engines::Maxwell3D::Regs::ClearReport::VtgPrimitivesOut:
+ return VideoCommon::QueryType::VtgPrimitivesOut;
+ default:
+ LOG_DEBUG(HW_GPU, "Unimplemented counter reset={}", clear_report);
+ return VideoCommon::QueryType::Payload;
+ }
+ }();
+ rasterizer->ResetCounter(query_type);
}
void Maxwell3D::ProcessSyncPoint() {
diff --git a/src/video_core/engines/maxwell_dma.cpp b/src/video_core/engines/maxwell_dma.cpp
index 422d4d859..56fbff306 100644
--- a/src/video_core/engines/maxwell_dma.cpp
+++ b/src/video_core/engines/maxwell_dma.cpp
@@ -228,7 +228,7 @@ void MaxwellDMA::CopyBlockLinearToPitch() {
Core::Memory::GpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::SafeRead> tmp_read_buffer(
memory_manager, src_operand.address, src_size, &read_buffer);
- Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::SafeReadCachedWrite>
+ Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadCachedWrite>
tmp_write_buffer(memory_manager, dst_operand.address, dst_size, &write_buffer);
UnswizzleSubrect(tmp_write_buffer, tmp_read_buffer, bytes_per_pixel, width, height, depth,
@@ -292,7 +292,7 @@ void MaxwellDMA::CopyPitchToBlockLinear() {
GPUVAddr dst_addr = regs.offset_out;
Core::Memory::GpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::SafeRead> tmp_read_buffer(
memory_manager, src_addr, src_size, &read_buffer);
- Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::SafeReadCachedWrite>
+ Core::Memory::GpuGuestMemoryScoped<u8, Core::Memory::GuestMemoryFlags::UnsafeReadCachedWrite>
tmp_write_buffer(memory_manager, dst_addr, dst_size, &write_buffer);
// If the input is linear and the output is tiled, swizzle the input and copy it over.
diff --git a/src/video_core/macro/macro_hle.cpp b/src/video_core/macro/macro_hle.cpp
index 046c8085e..46e853e04 100644
--- a/src/video_core/macro/macro_hle.cpp
+++ b/src/video_core/macro/macro_hle.cpp
@@ -327,12 +327,13 @@ public:
explicit HLE_DrawIndirectByteCount(Maxwell3D& maxwell3d_) : HLEMacroImpl(maxwell3d_) {}
void Execute(const std::vector<u32>& parameters, [[maybe_unused]] u32 method) override {
+ const bool force = maxwell3d.Rasterizer().HasDrawTransformFeedback();
+
auto topology = static_cast<Maxwell3D::Regs::PrimitiveTopology>(parameters[0] & 0xFFFFU);
- if (!maxwell3d.AnyParametersDirty() || !IsTopologySafe(topology)) {
+ if (!force && (!maxwell3d.AnyParametersDirty() || !IsTopologySafe(topology))) {
Fallback(parameters);
return;
}
-
auto& params = maxwell3d.draw_manager->GetIndirectParams();
params.is_byte_count = true;
params.is_indexed = false;
@@ -503,6 +504,8 @@ public:
maxwell3d.CallMethod(static_cast<size_t>(MAXWELL3D_REG_INDEX(launch_dma)), 0x1011, true);
maxwell3d.CallMethod(static_cast<size_t>(MAXWELL3D_REG_INDEX(inline_data)),
regs.transform_feedback.controls[0].stride, true);
+
+ maxwell3d.Rasterizer().RegisterTransformFeedback(regs.upload.dest.Address());
}
};
diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h
index 9fcaeeac7..a64404ce4 100644
--- a/src/video_core/query_cache.h
+++ b/src/video_core/query_cache.h
@@ -28,8 +28,11 @@
namespace VideoCore {
enum class QueryType {
SamplesPassed,
+ PrimitivesGenerated,
+ TfbPrimitivesWritten,
+ Count,
};
-constexpr std::size_t NumQueryTypes = 1;
+constexpr std::size_t NumQueryTypes = static_cast<size_t>(QueryType::Count);
} // namespace VideoCore
namespace VideoCommon {
@@ -44,15 +47,6 @@ public:
explicit CounterStreamBase(QueryCache& cache_, VideoCore::QueryType type_)
: cache{cache_}, type{type_} {}
- /// Updates the state of the stream, enabling or disabling as needed.
- void Update(bool enabled) {
- if (enabled) {
- Enable();
- } else {
- Disable();
- }
- }
-
/// Resets the stream to zero. It doesn't disable the query after resetting.
void Reset() {
if (current) {
@@ -80,7 +74,6 @@ public:
return current != nullptr;
}
-private:
/// Enables the stream.
void Enable() {
if (current) {
@@ -97,6 +90,7 @@ private:
last = std::exchange(current, nullptr);
}
+private:
QueryCache& cache;
const VideoCore::QueryType type;
@@ -112,8 +106,14 @@ public:
: rasterizer{rasterizer_},
// Use reinterpret_cast instead of static_cast as workaround for
// UBSan bug (https://github.com/llvm/llvm-project/issues/59060)
- cpu_memory{cpu_memory_}, streams{{CounterStream{reinterpret_cast<QueryCache&>(*this),
- VideoCore::QueryType::SamplesPassed}}} {
+ cpu_memory{cpu_memory_}, streams{{
+ {CounterStream{reinterpret_cast<QueryCache&>(*this),
+ VideoCore::QueryType::SamplesPassed}},
+ {CounterStream{reinterpret_cast<QueryCache&>(*this),
+ VideoCore::QueryType::PrimitivesGenerated}},
+ {CounterStream{reinterpret_cast<QueryCache&>(*this),
+ VideoCore::QueryType::TfbPrimitivesWritten}},
+ }} {
(void)slot_async_jobs.insert(); // Null value
}
@@ -157,12 +157,11 @@ public:
AsyncFlushQuery(query, timestamp, lock);
}
- /// Updates counters from GPU state. Expected to be called once per draw, clear or dispatch.
- void UpdateCounters() {
+ /// Enables all available GPU counters
+ void EnableCounters() {
std::unique_lock lock{mutex};
- if (maxwell3d) {
- const auto& regs = maxwell3d->regs;
- Stream(VideoCore::QueryType::SamplesPassed).Update(regs.zpass_pixel_count_enable);
+ for (auto& stream : streams) {
+ stream.Enable();
}
}
@@ -176,7 +175,7 @@ public:
void DisableStreams() {
std::unique_lock lock{mutex};
for (auto& stream : streams) {
- stream.Update(false);
+ stream.Disable();
}
}
@@ -353,7 +352,7 @@ private:
std::shared_ptr<std::vector<AsyncJobId>> uncommitted_flushes{};
std::list<std::shared_ptr<std::vector<AsyncJobId>>> committed_flushes;
-};
+}; // namespace VideoCommon
template <class QueryCache, class HostCounter>
class HostCounterBase {
diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h
index af1469147..49224ca85 100644
--- a/src/video_core/rasterizer_interface.h
+++ b/src/video_core/rasterizer_interface.h
@@ -173,5 +173,13 @@ public:
virtual void BindChannel(Tegra::Control::ChannelState& channel) {}
virtual void ReleaseChannel(s32 channel_id) {}
+
+ /// Register the address as a Transform Feedback Object
+ virtual void RegisterTransformFeedback(GPUVAddr tfb_object_addr) {}
+
+ /// Returns true when the rasterizer has Draw Transform Feedback capabilities
+ virtual bool HasDrawTransformFeedback() {
+ return false;
+ }
};
} // namespace VideoCore
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.cpp b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
index b787b6994..517ac14dd 100644
--- a/src/video_core/renderer_opengl/gl_buffer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_buffer_cache.cpp
@@ -376,4 +376,15 @@ void BufferCacheRuntime::BindImageBuffer(Buffer& buffer, u32 offset, u32 size, P
*image_handles++ = buffer.View(offset, size, format);
}
+void BufferCacheRuntime::BindTransformFeedbackObject(GPUVAddr tfb_object_addr) {
+ OGLTransformFeedback& tfb_object = tfb_objects[tfb_object_addr];
+ tfb_object.Create();
+ glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, tfb_object.handle);
+}
+
+GLuint BufferCacheRuntime::GetTransformFeedbackObject(GPUVAddr tfb_object_addr) {
+ ASSERT(tfb_objects.contains(tfb_object_addr));
+ return tfb_objects[tfb_object_addr].handle;
+}
+
} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_buffer_cache.h b/src/video_core/renderer_opengl/gl_buffer_cache.h
index 1e8708f59..2c18de166 100644
--- a/src/video_core/renderer_opengl/gl_buffer_cache.h
+++ b/src/video_core/renderer_opengl/gl_buffer_cache.h
@@ -5,6 +5,7 @@
#include <array>
#include <span>
+#include <unordered_map>
#include "common/common_types.h"
#include "video_core/buffer_cache/buffer_cache_base.h"
@@ -121,6 +122,9 @@ public:
void BindImageBuffer(Buffer& buffer, u32 offset, u32 size,
VideoCore::Surface::PixelFormat format);
+ void BindTransformFeedbackObject(GPUVAddr tfb_object_addr);
+ GLuint GetTransformFeedbackObject(GPUVAddr tfb_object_addr);
+
u64 GetDeviceMemoryUsage() const;
void BindFastUniformBuffer(size_t stage, u32 binding_index, u32 size) {
@@ -233,6 +237,7 @@ private:
u32 index_buffer_offset = 0;
u64 device_access_memory;
+ std::unordered_map<GPUVAddr, OGLTransformFeedback> tfb_objects;
};
struct BufferCacheParams {
diff --git a/src/video_core/renderer_opengl/gl_query_cache.cpp b/src/video_core/renderer_opengl/gl_query_cache.cpp
index ec142d48e..fef7360ed 100644
--- a/src/video_core/renderer_opengl/gl_query_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_query_cache.cpp
@@ -18,16 +18,27 @@ namespace OpenGL {
namespace {
-constexpr std::array<GLenum, VideoCore::NumQueryTypes> QueryTargets = {GL_SAMPLES_PASSED};
-
constexpr GLenum GetTarget(VideoCore::QueryType type) {
- return QueryTargets[static_cast<std::size_t>(type)];
+ switch (type) {
+ case VideoCore::QueryType::SamplesPassed:
+ return GL_SAMPLES_PASSED;
+ case VideoCore::QueryType::PrimitivesGenerated:
+ return GL_PRIMITIVES_GENERATED;
+ case VideoCore::QueryType::TfbPrimitivesWritten:
+ return GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN;
+ default:
+ break;
+ }
+ UNIMPLEMENTED_MSG("Query type {}", type);
+ return 0;
}
} // Anonymous namespace
QueryCache::QueryCache(RasterizerOpenGL& rasterizer_, Core::Memory::Memory& cpu_memory_)
- : QueryCacheLegacy(rasterizer_, cpu_memory_), gl_rasterizer{rasterizer_} {}
+ : QueryCacheLegacy(rasterizer_, cpu_memory_), gl_rasterizer{rasterizer_} {
+ EnableCounters();
+}
QueryCache::~QueryCache() = default;
@@ -103,13 +114,13 @@ u64 CachedQuery::Flush([[maybe_unused]] bool async) {
auto& stream = cache->Stream(type);
const bool slice_counter = WaitPending() && stream.IsEnabled();
if (slice_counter) {
- stream.Update(false);
+ stream.Disable();
}
auto result = VideoCommon::CachedQueryBase<HostCounter>::Flush();
if (slice_counter) {
- stream.Update(true);
+ stream.Enable();
}
return result;
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 4832c03c5..7a5fad735 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -51,6 +51,22 @@ constexpr size_t NUM_SUPPORTED_VERTEX_ATTRIBUTES = 16;
void oglEnable(GLenum cap, bool state) {
(state ? glEnable : glDisable)(cap);
}
+
+std::optional<VideoCore::QueryType> MaxwellToVideoCoreQuery(VideoCommon::QueryType type) {
+ switch (type) {
+ case VideoCommon::QueryType::PrimitivesGenerated:
+ case VideoCommon::QueryType::VtgPrimitivesOut:
+ return VideoCore::QueryType::PrimitivesGenerated;
+ case VideoCommon::QueryType::ZPassPixelCount64:
+ return VideoCore::QueryType::SamplesPassed;
+ case VideoCommon::QueryType::StreamingPrimitivesSucceeded:
+ // case VideoCommon::QueryType::StreamingByteCount:
+ // TODO: StreamingByteCount = StreamingPrimitivesSucceeded * num_verts * vert_stride
+ return VideoCore::QueryType::TfbPrimitivesWritten;
+ default:
+ return std::nullopt;
+ }
+}
} // Anonymous namespace
RasterizerOpenGL::RasterizerOpenGL(Core::Frontend::EmuWindow& emu_window_, Tegra::GPU& gpu_,
@@ -216,7 +232,6 @@ void RasterizerOpenGL::PrepareDraw(bool is_indexed, Func&& draw_func) {
SCOPE_EXIT({ gpu.TickWork(); });
gpu_memory->FlushCaching();
- query_cache.UpdateCounters();
GraphicsPipeline* const pipeline{shader_cache.CurrentGraphicsPipeline()};
if (!pipeline) {
@@ -294,6 +309,13 @@ void RasterizerOpenGL::DrawIndirect() {
const auto& params = maxwell3d->draw_manager->GetIndirectParams();
buffer_cache.SetDrawIndirect(&params);
PrepareDraw(params.is_indexed, [this, &params](GLenum primitive_mode) {
+ if (params.is_byte_count) {
+ const GPUVAddr tfb_object_base_addr = params.indirect_start_address - 4U;
+ const GLuint tfb_object =
+ buffer_cache_runtime.GetTransformFeedbackObject(tfb_object_base_addr);
+ glDrawTransformFeedback(primitive_mode, tfb_object);
+ return;
+ }
const auto [buffer, offset] = buffer_cache.GetDrawIndirectBuffer();
const GLvoid* const gl_offset =
reinterpret_cast<const GLvoid*>(static_cast<uintptr_t>(offset));
@@ -334,7 +356,6 @@ void RasterizerOpenGL::DrawTexture() {
MICROPROFILE_SCOPE(OpenGL_Drawing);
SCOPE_EXIT({ gpu.TickWork(); });
- query_cache.UpdateCounters();
texture_cache.SynchronizeGraphicsDescriptors();
texture_cache.UpdateRenderTargets(false);
@@ -401,21 +422,28 @@ void RasterizerOpenGL::DispatchCompute() {
}
void RasterizerOpenGL::ResetCounter(VideoCommon::QueryType type) {
- if (type == VideoCommon::QueryType::ZPassPixelCount64) {
- query_cache.ResetCounter(VideoCore::QueryType::SamplesPassed);
+ const auto query_cache_type = MaxwellToVideoCoreQuery(type);
+ if (!query_cache_type.has_value()) {
+ UNIMPLEMENTED_IF_MSG(type != VideoCommon::QueryType::Payload, "Reset query type: {}", type);
+ return;
}
+ query_cache.ResetCounter(*query_cache_type);
}
void RasterizerOpenGL::Query(GPUVAddr gpu_addr, VideoCommon::QueryType type,
VideoCommon::QueryPropertiesFlags flags, u32 payload, u32 subreport) {
- if (type == VideoCommon::QueryType::ZPassPixelCount64) {
- if (True(flags & VideoCommon::QueryPropertiesFlags::HasTimeout)) {
- query_cache.Query(gpu_addr, VideoCore::QueryType::SamplesPassed, {gpu.GetTicks()});
- } else {
- query_cache.Query(gpu_addr, VideoCore::QueryType::SamplesPassed, std::nullopt);
- }
- return;
+ const auto query_cache_type = MaxwellToVideoCoreQuery(type);
+ if (!query_cache_type.has_value()) {
+ return QueryFallback(gpu_addr, type, flags, payload, subreport);
}
+ const bool has_timeout = True(flags & VideoCommon::QueryPropertiesFlags::HasTimeout);
+ const auto timestamp = has_timeout ? std::optional<u64>{gpu.GetTicks()} : std::nullopt;
+ query_cache.Query(gpu_addr, *query_cache_type, timestamp);
+}
+
+void RasterizerOpenGL::QueryFallback(GPUVAddr gpu_addr, VideoCommon::QueryType type,
+ VideoCommon::QueryPropertiesFlags flags, u32 payload,
+ u32 subreport) {
if (type != VideoCommon::QueryType::Payload) {
payload = 1u;
}
@@ -1350,6 +1378,10 @@ void RasterizerOpenGL::ReleaseChannel(s32 channel_id) {
query_cache.EraseChannel(channel_id);
}
+void RasterizerOpenGL::RegisterTransformFeedback(GPUVAddr tfb_object_addr) {
+ buffer_cache_runtime.BindTransformFeedbackObject(tfb_object_addr);
+}
+
AccelerateDMA::AccelerateDMA(BufferCache& buffer_cache_, TextureCache& texture_cache_)
: buffer_cache{buffer_cache_}, texture_cache{texture_cache_} {}
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index ceffe1f1e..ce3460938 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -139,6 +139,12 @@ public:
void ReleaseChannel(s32 channel_id) override;
+ void RegisterTransformFeedback(GPUVAddr tfb_object_addr) override;
+
+ bool HasDrawTransformFeedback() override {
+ return true;
+ }
+
private:
static constexpr size_t MAX_TEXTURES = 192;
static constexpr size_t MAX_IMAGES = 48;
@@ -225,6 +231,9 @@ private:
/// End a transform feedback
void EndTransformFeedback();
+ void QueryFallback(GPUVAddr gpu_addr, VideoCommon::QueryType type,
+ VideoCommon::QueryPropertiesFlags flags, u32 payload, u32 subreport);
+
Tegra::GPU& gpu;
const Device& device;
diff --git a/src/video_core/renderer_opengl/gl_resource_manager.cpp b/src/video_core/renderer_opengl/gl_resource_manager.cpp
index eae8fd110..1d2c9b70a 100644
--- a/src/video_core/renderer_opengl/gl_resource_manager.cpp
+++ b/src/video_core/renderer_opengl/gl_resource_manager.cpp
@@ -207,4 +207,21 @@ void OGLQuery::Release() {
handle = 0;
}
+void OGLTransformFeedback::Create() {
+ if (handle != 0)
+ return;
+
+ MICROPROFILE_SCOPE(OpenGL_ResourceCreation);
+ glCreateTransformFeedbacks(1, &handle);
+}
+
+void OGLTransformFeedback::Release() {
+ if (handle == 0)
+ return;
+
+ MICROPROFILE_SCOPE(OpenGL_ResourceDeletion);
+ glDeleteTransformFeedbacks(1, &handle);
+ handle = 0;
+}
+
} // 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 77362acd2..6ca8227bd 100644
--- a/src/video_core/renderer_opengl/gl_resource_manager.h
+++ b/src/video_core/renderer_opengl/gl_resource_manager.h
@@ -323,4 +323,31 @@ public:
GLuint handle = 0;
};
+class OGLTransformFeedback final {
+public:
+ YUZU_NON_COPYABLE(OGLTransformFeedback);
+
+ OGLTransformFeedback() = default;
+
+ OGLTransformFeedback(OGLTransformFeedback&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
+
+ ~OGLTransformFeedback() {
+ Release();
+ }
+
+ OGLTransformFeedback& operator=(OGLTransformFeedback&& o) noexcept {
+ Release();
+ handle = std::exchange(o.handle, 0);
+ return *this;
+ }
+
+ /// Creates a new internal OpenGL resource and stores the handle
+ void Create();
+
+ /// Deletes the internal OpenGL resource
+ void Release();
+
+ GLuint handle = 0;
+};
+
} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index 26f2d0ea7..30df41b7d 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -51,7 +51,7 @@ using VideoCommon::LoadPipelines;
using VideoCommon::SerializePipeline;
using Context = ShaderContext::Context;
-constexpr u32 CACHE_VERSION = 9;
+constexpr u32 CACHE_VERSION = 10;
template <typename Container>
auto MakeSpan(Container& container) {
@@ -233,6 +233,7 @@ ShaderCache::ShaderCache(RasterizerOpenGL& rasterizer_, Core::Frontend::EmuWindo
.ignore_nan_fp_comparisons = true,
.gl_max_compute_smem_size = device.GetMaxComputeSharedMemorySize(),
.min_ssbo_alignment = device.GetShaderStorageBufferAlignment(),
+ .max_user_clip_distances = 8,
},
host_info{
.support_float64 = true,
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp
index 5958f52f7..3c61799fa 100644
--- a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp
@@ -78,8 +78,15 @@ vk::Buffer CreateBuffer(const Device& device, const MemoryAllocator& memory_allo
}
} // Anonymous namespace
-Buffer::Buffer(BufferCacheRuntime&, VideoCommon::NullBufferParams null_params)
- : VideoCommon::BufferBase<VideoCore::RasterizerInterface>(null_params), tracker{4096} {}
+Buffer::Buffer(BufferCacheRuntime& runtime, VideoCommon::NullBufferParams null_params)
+ : VideoCommon::BufferBase<VideoCore::RasterizerInterface>(null_params), tracker{4096} {
+ if (runtime.device.HasNullDescriptor()) {
+ return;
+ }
+ device = &runtime.device;
+ buffer = runtime.CreateNullBuffer();
+ is_null = true;
+}
Buffer::Buffer(BufferCacheRuntime& runtime, VideoCore::RasterizerInterface& rasterizer_,
VAddr cpu_addr_, u64 size_bytes_)
@@ -93,8 +100,12 @@ Buffer::Buffer(BufferCacheRuntime& runtime, VideoCore::RasterizerInterface& rast
VkBufferView Buffer::View(u32 offset, u32 size, VideoCore::Surface::PixelFormat format) {
if (!device) {
- // Null buffer, return a null descriptor
+ // Null buffer supported, return a null descriptor
return VK_NULL_HANDLE;
+ } else if (is_null) {
+ // Null buffer not supported, adjust offset and size
+ offset = 0;
+ size = 0;
}
const auto it{std::ranges::find_if(views, [offset, size, format](const BufferView& view) {
return offset == view.offset && size == view.size && format == view.format;
@@ -563,22 +574,27 @@ void BufferCacheRuntime::BindVertexBuffers(VideoCommon::HostBindings<Buffer>& bi
}
buffer_handles.push_back(handle);
}
+ const u32 device_max = device.GetMaxVertexInputBindings();
+ const u32 min_binding = std::min(bindings.min_index, device_max);
+ const u32 max_binding = std::min(bindings.max_index, device_max);
+ const u32 binding_count = max_binding - min_binding;
+ if (binding_count == 0) {
+ return;
+ }
if (device.IsExtExtendedDynamicStateSupported()) {
- scheduler.Record([this, bindings_ = std::move(bindings),
- buffer_handles_ = std::move(buffer_handles)](vk::CommandBuffer cmdbuf) {
- cmdbuf.BindVertexBuffers2EXT(bindings_.min_index,
- std::min(bindings_.max_index - bindings_.min_index,
- device.GetMaxVertexInputBindings()),
- buffer_handles_.data(), bindings_.offsets.data(),
- bindings_.sizes.data(), bindings_.strides.data());
+ scheduler.Record([bindings_ = std::move(bindings),
+ buffer_handles_ = std::move(buffer_handles),
+ binding_count](vk::CommandBuffer cmdbuf) {
+ cmdbuf.BindVertexBuffers2EXT(bindings_.min_index, binding_count, buffer_handles_.data(),
+ bindings_.offsets.data(), bindings_.sizes.data(),
+ bindings_.strides.data());
});
} else {
- scheduler.Record([this, bindings_ = std::move(bindings),
- buffer_handles_ = std::move(buffer_handles)](vk::CommandBuffer cmdbuf) {
- cmdbuf.BindVertexBuffers(bindings_.min_index,
- std::min(bindings_.max_index - bindings_.min_index,
- device.GetMaxVertexInputBindings()),
- buffer_handles_.data(), bindings_.offsets.data());
+ scheduler.Record([bindings_ = std::move(bindings),
+ buffer_handles_ = std::move(buffer_handles),
+ binding_count](vk::CommandBuffer cmdbuf) {
+ cmdbuf.BindVertexBuffers(bindings_.min_index, binding_count, buffer_handles_.data(),
+ bindings_.offsets.data());
});
}
}
@@ -622,9 +638,12 @@ void BufferCacheRuntime::BindTransformFeedbackBuffers(VideoCommon::HostBindings<
}
void BufferCacheRuntime::ReserveNullBuffer() {
- if (null_buffer) {
- return;
+ if (!null_buffer) {
+ null_buffer = CreateNullBuffer();
}
+}
+
+vk::Buffer BufferCacheRuntime::CreateNullBuffer() {
VkBufferCreateInfo create_info{
.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
.pNext = nullptr,
@@ -639,15 +658,17 @@ void BufferCacheRuntime::ReserveNullBuffer() {
if (device.IsExtTransformFeedbackSupported()) {
create_info.usage |= VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT;
}
- null_buffer = memory_allocator.CreateBuffer(create_info, MemoryUsage::DeviceLocal);
+ vk::Buffer ret = memory_allocator.CreateBuffer(create_info, MemoryUsage::DeviceLocal);
if (device.HasDebuggingToolAttached()) {
- null_buffer.SetObjectNameEXT("Null buffer");
+ ret.SetObjectNameEXT("Null buffer");
}
scheduler.RequestOutsideRenderPassOperationContext();
- scheduler.Record([buffer = *null_buffer](vk::CommandBuffer cmdbuf) {
+ scheduler.Record([buffer = *ret](vk::CommandBuffer cmdbuf) {
cmdbuf.FillBuffer(buffer, 0, VK_WHOLE_SIZE, 0);
});
+
+ return ret;
}
} // namespace Vulkan
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.h b/src/video_core/renderer_vulkan/vk_buffer_cache.h
index 0b3fbd6d0..dc300d7cb 100644
--- a/src/video_core/renderer_vulkan/vk_buffer_cache.h
+++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h
@@ -63,6 +63,7 @@ private:
vk::Buffer buffer;
std::vector<BufferView> views;
VideoCommon::UsageTracker tracker;
+ bool is_null{};
};
class QuadArrayIndexBuffer;
@@ -151,6 +152,7 @@ private:
}
void ReserveNullBuffer();
+ vk::Buffer CreateNullBuffer();
const Device& device;
MemoryAllocator& memory_allocator;
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
index 2a13b2a72..d1841198d 100644
--- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
@@ -54,7 +54,7 @@ using VideoCommon::FileEnvironment;
using VideoCommon::GenericEnvironment;
using VideoCommon::GraphicsEnvironment;
-constexpr u32 CACHE_VERSION = 10;
+constexpr u32 CACHE_VERSION = 11;
constexpr std::array<char, 8> VULKAN_CACHE_MAGIC_NUMBER{'y', 'u', 'z', 'u', 'v', 'k', 'c', 'h'};
template <typename Container>
@@ -374,6 +374,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, const Device& device
.has_broken_robust =
device.IsNvidia() && device.GetNvidiaArch() <= NvidiaArchitecture::Arch_Pascal,
.min_ssbo_alignment = device.GetStorageBufferAlignment(),
+ .max_user_clip_distances = device.GetMaxUserClipDistances(),
};
host_info = Shader::HostTranslateInfo{
diff --git a/src/video_core/renderer_vulkan/vk_present_manager.cpp b/src/video_core/renderer_vulkan/vk_present_manager.cpp
index 5e7518d96..792ed9615 100644
--- a/src/video_core/renderer_vulkan/vk_present_manager.cpp
+++ b/src/video_core/renderer_vulkan/vk_present_manager.cpp
@@ -329,7 +329,7 @@ void PresentManager::CopyToSwapchainImpl(Frame* frame) {
// to account for that.
const bool is_suboptimal = swapchain.NeedsRecreation();
const bool size_changed =
- swapchain.GetWidth() != frame->width || swapchain.GetHeight() != frame->height;
+ swapchain.GetWidth() < frame->width || swapchain.GetHeight() < frame->height;
if (is_suboptimal || size_changed) {
RecreateSwapchain(frame);
}
diff --git a/src/video_core/renderer_vulkan/vk_query_cache.cpp b/src/video_core/renderer_vulkan/vk_query_cache.cpp
index 078777cdd..95954ade7 100644
--- a/src/video_core/renderer_vulkan/vk_query_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_query_cache.cpp
@@ -289,12 +289,15 @@ public:
}
if (has_multi_queries) {
- size_t intermediary_buffer_index = ObtainBuffer<false>(num_slots_used);
+ const size_t min_accumulation_limit =
+ std::min(first_accumulation_checkpoint, num_slots_used);
+ const size_t max_accumulation_limit =
+ std::max(last_accumulation_checkpoint, num_slots_used);
+ const size_t intermediary_buffer_index = ObtainBuffer<false>(num_slots_used);
resolve_buffers.push_back(intermediary_buffer_index);
queries_prefix_scan_pass->Run(*accumulation_buffer, *buffers[intermediary_buffer_index],
*buffers[resolve_buffer_index], num_slots_used,
- std::min(first_accumulation_checkpoint, num_slots_used),
- last_accumulation_checkpoint);
+ min_accumulation_limit, max_accumulation_limit);
} else {
scheduler.RequestOutsideRenderPassOperationContext();
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 59829c88b..241fc34be 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -485,6 +485,10 @@ void RasterizerVulkan::DispatchCompute() {
}
void RasterizerVulkan::ResetCounter(VideoCommon::QueryType type) {
+ if (type != VideoCommon::QueryType::ZPassPixelCount64) {
+ LOG_DEBUG(Render_Vulkan, "Unimplemented counter reset={}", type);
+ return;
+ }
query_cache.CounterReset(type);
}
diff --git a/src/video_core/shader_environment.cpp b/src/video_core/shader_environment.cpp
index 4edbe5700..492440ac4 100644
--- a/src/video_core/shader_environment.cpp
+++ b/src/video_core/shader_environment.cpp
@@ -62,23 +62,9 @@ static Shader::TextureType ConvertTextureType(const Tegra::Texture::TICEntry& en
}
static Shader::TexturePixelFormat ConvertTexturePixelFormat(const Tegra::Texture::TICEntry& entry) {
- switch (PixelFormatFromTextureInfo(entry.format, entry.r_type, entry.g_type, entry.b_type,
- entry.a_type, entry.srgb_conversion)) {
- case VideoCore::Surface::PixelFormat::A8B8G8R8_SNORM:
- return Shader::TexturePixelFormat::A8B8G8R8_SNORM;
- case VideoCore::Surface::PixelFormat::R8_SNORM:
- return Shader::TexturePixelFormat::R8_SNORM;
- case VideoCore::Surface::PixelFormat::R8G8_SNORM:
- return Shader::TexturePixelFormat::R8G8_SNORM;
- case VideoCore::Surface::PixelFormat::R16G16B16A16_SNORM:
- return Shader::TexturePixelFormat::R16G16B16A16_SNORM;
- case VideoCore::Surface::PixelFormat::R16G16_SNORM:
- return Shader::TexturePixelFormat::R16G16_SNORM;
- case VideoCore::Surface::PixelFormat::R16_SNORM:
- return Shader::TexturePixelFormat::R16_SNORM;
- default:
- return Shader::TexturePixelFormat::OTHER;
- }
+ return static_cast<Shader::TexturePixelFormat>(
+ PixelFormatFromTextureInfo(entry.format, entry.r_type, entry.g_type, entry.b_type,
+ entry.a_type, entry.srgb_conversion));
}
static std::string_view StageToPrefix(Shader::Stage stage) {
@@ -398,6 +384,11 @@ Shader::TexturePixelFormat GraphicsEnvironment::ReadTexturePixelFormat(u32 handl
return result;
}
+bool GraphicsEnvironment::IsTexturePixelFormatInteger(u32 handle) {
+ return VideoCore::Surface::IsPixelFormatInteger(
+ static_cast<VideoCore::Surface::PixelFormat>(ReadTexturePixelFormat(handle)));
+}
+
u32 GraphicsEnvironment::ReadViewportTransformState() {
const auto& regs{maxwell3d->regs};
viewport_transform_state = regs.viewport_scale_offset_enabled;
@@ -448,6 +439,11 @@ Shader::TexturePixelFormat ComputeEnvironment::ReadTexturePixelFormat(u32 handle
return result;
}
+bool ComputeEnvironment::IsTexturePixelFormatInteger(u32 handle) {
+ return VideoCore::Surface::IsPixelFormatInteger(
+ static_cast<VideoCore::Surface::PixelFormat>(ReadTexturePixelFormat(handle)));
+}
+
u32 ComputeEnvironment::ReadViewportTransformState() {
return viewport_transform_state;
}
@@ -551,6 +547,11 @@ Shader::TexturePixelFormat FileEnvironment::ReadTexturePixelFormat(u32 handle) {
return it->second;
}
+bool FileEnvironment::IsTexturePixelFormatInteger(u32 handle) {
+ return VideoCore::Surface::IsPixelFormatInteger(
+ static_cast<VideoCore::Surface::PixelFormat>(ReadTexturePixelFormat(handle)));
+}
+
u32 FileEnvironment::ReadViewportTransformState() {
return viewport_transform_state;
}
diff --git a/src/video_core/shader_environment.h b/src/video_core/shader_environment.h
index b90f3d44e..6b372e336 100644
--- a/src/video_core/shader_environment.h
+++ b/src/video_core/shader_environment.h
@@ -115,6 +115,8 @@ public:
Shader::TexturePixelFormat ReadTexturePixelFormat(u32 handle) override;
+ bool IsTexturePixelFormatInteger(u32 handle) override;
+
u32 ReadViewportTransformState() override;
std::optional<Shader::ReplaceConstant> GetReplaceConstBuffer(u32 bank, u32 offset) override;
@@ -139,6 +141,8 @@ public:
Shader::TexturePixelFormat ReadTexturePixelFormat(u32 handle) override;
+ bool IsTexturePixelFormatInteger(u32 handle) override;
+
u32 ReadViewportTransformState() override;
std::optional<Shader::ReplaceConstant> GetReplaceConstBuffer(
@@ -171,6 +175,8 @@ public:
[[nodiscard]] Shader::TexturePixelFormat ReadTexturePixelFormat(u32 handle) override;
+ [[nodiscard]] bool IsTexturePixelFormatInteger(u32 handle) override;
+
[[nodiscard]] u32 ReadViewportTransformState() override;
[[nodiscard]] u32 LocalMemorySize() const override;
diff --git a/src/video_core/texture_cache/decode_bc.cpp b/src/video_core/texture_cache/decode_bc.cpp
index 3e26474a3..a018c6df4 100644
--- a/src/video_core/texture_cache/decode_bc.cpp
+++ b/src/video_core/texture_cache/decode_bc.cpp
@@ -60,66 +60,72 @@ u32 ConvertedBytesPerBlock(VideoCore::Surface::PixelFormat pixel_format) {
}
template <auto decompress, PixelFormat pixel_format>
-void DecompressBlocks(std::span<const u8> input, std::span<u8> output, Extent3D extent,
+void DecompressBlocks(std::span<const u8> input, std::span<u8> output, BufferImageCopy& copy,
bool is_signed = false) {
const u32 out_bpp = ConvertedBytesPerBlock(pixel_format);
- const u32 block_width = std::min(extent.width, BLOCK_SIZE);
- const u32 block_height = std::min(extent.height, BLOCK_SIZE);
- const u32 pitch = extent.width * out_bpp;
+ const u32 block_size = BlockSize(pixel_format);
+ const u32 width = copy.image_extent.width;
+ const u32 height = copy.image_extent.height * copy.image_subresource.num_layers;
+ const u32 depth = copy.image_extent.depth;
+ const u32 block_width = std::min(width, BLOCK_SIZE);
+ const u32 block_height = std::min(height, BLOCK_SIZE);
+ const u32 pitch = width * out_bpp;
size_t input_offset = 0;
size_t output_offset = 0;
- for (u32 slice = 0; slice < extent.depth; ++slice) {
- for (u32 y = 0; y < extent.height; y += block_height) {
- size_t row_offset = 0;
- for (u32 x = 0; x < extent.width;
- x += block_width, row_offset += block_width * out_bpp) {
- const u8* src = input.data() + input_offset;
- u8* const dst = output.data() + output_offset + row_offset;
+ for (u32 slice = 0; slice < depth; ++slice) {
+ for (u32 y = 0; y < height; y += block_height) {
+ size_t src_offset = input_offset;
+ size_t dst_offset = output_offset;
+ for (u32 x = 0; x < width; x += block_width) {
+ const u8* src = input.data() + src_offset;
+ u8* const dst = output.data() + dst_offset;
if constexpr (IsSigned(pixel_format)) {
- decompress(src, dst, x, y, extent.width, extent.height, is_signed);
+ decompress(src, dst, x, y, width, height, is_signed);
} else {
- decompress(src, dst, x, y, extent.width, extent.height);
+ decompress(src, dst, x, y, width, height);
}
- input_offset += BlockSize(pixel_format);
+ src_offset += block_size;
+ dst_offset += block_width * out_bpp;
}
+ input_offset += copy.buffer_row_length * block_size / block_width;
output_offset += block_height * pitch;
}
}
}
-void DecompressBCn(std::span<const u8> input, std::span<u8> output, Extent3D extent,
+void DecompressBCn(std::span<const u8> input, std::span<u8> output, BufferImageCopy& copy,
VideoCore::Surface::PixelFormat pixel_format) {
switch (pixel_format) {
case PixelFormat::BC1_RGBA_UNORM:
case PixelFormat::BC1_RGBA_SRGB:
- DecompressBlocks<bcn::DecodeBc1, PixelFormat::BC1_RGBA_UNORM>(input, output, extent);
+ DecompressBlocks<bcn::DecodeBc1, PixelFormat::BC1_RGBA_UNORM>(input, output, copy);
break;
case PixelFormat::BC2_UNORM:
case PixelFormat::BC2_SRGB:
- DecompressBlocks<bcn::DecodeBc2, PixelFormat::BC2_UNORM>(input, output, extent);
+ DecompressBlocks<bcn::DecodeBc2, PixelFormat::BC2_UNORM>(input, output, copy);
break;
case PixelFormat::BC3_UNORM:
case PixelFormat::BC3_SRGB:
- DecompressBlocks<bcn::DecodeBc3, PixelFormat::BC3_UNORM>(input, output, extent);
+ DecompressBlocks<bcn::DecodeBc3, PixelFormat::BC3_UNORM>(input, output, copy);
break;
case PixelFormat::BC4_SNORM:
case PixelFormat::BC4_UNORM:
DecompressBlocks<bcn::DecodeBc4, PixelFormat::BC4_UNORM>(
- input, output, extent, pixel_format == PixelFormat::BC4_SNORM);
+ input, output, copy, pixel_format == PixelFormat::BC4_SNORM);
break;
case PixelFormat::BC5_SNORM:
case PixelFormat::BC5_UNORM:
DecompressBlocks<bcn::DecodeBc5, PixelFormat::BC5_UNORM>(
- input, output, extent, pixel_format == PixelFormat::BC5_SNORM);
+ input, output, copy, pixel_format == PixelFormat::BC5_SNORM);
break;
case PixelFormat::BC6H_SFLOAT:
case PixelFormat::BC6H_UFLOAT:
DecompressBlocks<bcn::DecodeBc6, PixelFormat::BC6H_UFLOAT>(
- input, output, extent, pixel_format == PixelFormat::BC6H_SFLOAT);
+ input, output, copy, pixel_format == PixelFormat::BC6H_SFLOAT);
break;
case PixelFormat::BC7_SRGB:
case PixelFormat::BC7_UNORM:
- DecompressBlocks<bcn::DecodeBc7, PixelFormat::BC7_UNORM>(input, output, extent);
+ DecompressBlocks<bcn::DecodeBc7, PixelFormat::BC7_UNORM>(input, output, copy);
break;
default:
LOG_WARNING(HW_GPU, "Unimplemented BCn decompression {}", pixel_format);
diff --git a/src/video_core/texture_cache/decode_bc.h b/src/video_core/texture_cache/decode_bc.h
index 41d1ec0a3..4e3b9b8ac 100644
--- a/src/video_core/texture_cache/decode_bc.h
+++ b/src/video_core/texture_cache/decode_bc.h
@@ -13,7 +13,7 @@ namespace VideoCommon {
[[nodiscard]] u32 ConvertedBytesPerBlock(VideoCore::Surface::PixelFormat pixel_format);
-void DecompressBCn(std::span<const u8> input, std::span<u8> output, Extent3D extent,
+void DecompressBCn(std::span<const u8> input, std::span<u8> output, BufferImageCopy& copy,
VideoCore::Surface::PixelFormat pixel_format);
} // namespace VideoCommon
diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp
index 15596c925..fcf70068e 100644
--- a/src/video_core/texture_cache/util.cpp
+++ b/src/video_core/texture_cache/util.cpp
@@ -837,6 +837,7 @@ boost::container::small_vector<BufferImageCopy, 16> UnswizzleImage(Tegra::Memory
std::span<u8> output) {
const size_t guest_size_bytes = input.size_bytes();
const u32 bpp_log2 = BytesPerBlockLog2(info.format);
+ const Extent2D tile_size = DefaultBlockSize(info.format);
const Extent3D size = info.size;
if (info.type == ImageType::Linear) {
@@ -847,7 +848,7 @@ boost::container::small_vector<BufferImageCopy, 16> UnswizzleImage(Tegra::Memory
return {{
.buffer_offset = 0,
.buffer_size = guest_size_bytes,
- .buffer_row_length = info.pitch >> bpp_log2,
+ .buffer_row_length = info.pitch * tile_size.width >> bpp_log2,
.buffer_image_height = size.height,
.image_subresource =
{
@@ -862,7 +863,6 @@ boost::container::small_vector<BufferImageCopy, 16> UnswizzleImage(Tegra::Memory
const LevelInfo level_info = MakeLevelInfo(info);
const s32 num_layers = info.resources.layers;
const s32 num_levels = info.resources.levels;
- const Extent2D tile_size = DefaultBlockSize(info.format);
const std::array level_sizes = CalculateLevelSizes(level_info, num_levels);
const Extent2D gob = GobSize(bpp_log2, info.block.height, info.tile_width_spacing);
const u32 layer_size = CalculateLevelBytes(level_sizes, num_levels);
@@ -926,8 +926,6 @@ void ConvertImage(std::span<const u8> input, const ImageInfo& info, std::span<u8
const auto input_offset = input.subspan(copy.buffer_offset);
copy.buffer_offset = output_offset;
- copy.buffer_row_length = mip_size.width;
- copy.buffer_image_height = mip_size.height;
const auto recompression_setting = Settings::values.astc_recompression.GetValue();
const bool astc = IsPixelFormatASTC(info.format);
@@ -972,16 +970,14 @@ void ConvertImage(std::span<const u8> input, const ImageInfo& info, std::span<u8
bpp_div;
output_offset += static_cast<u32>(copy.buffer_size);
} else {
- const Extent3D image_extent{
- .width = copy.image_extent.width,
- .height = copy.image_extent.height * copy.image_subresource.num_layers,
- .depth = copy.image_extent.depth,
- };
- DecompressBCn(input_offset, output.subspan(output_offset), image_extent, info.format);
+ DecompressBCn(input_offset, output.subspan(output_offset), copy, info.format);
output_offset += copy.image_extent.width * copy.image_extent.height *
copy.image_subresource.num_layers *
ConvertedBytesPerBlock(info.format);
}
+
+ copy.buffer_row_length = mip_size.width;
+ copy.buffer_image_height = mip_size.height;
}
}
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 1fda0042d..727bbd98d 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -695,6 +695,11 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
std::min(properties.properties.limits.maxVertexInputBindings, 16U);
}
+ if (is_turnip) {
+ LOG_WARNING(Render_Vulkan, "Turnip requires higher-than-reported binding limits");
+ properties.properties.limits.maxVertexInputBindings = 32;
+ }
+
if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) {
LOG_INFO(Render_Vulkan,
"Removing extendedDynamicState2 due to missing extendedDynamicState");
@@ -750,10 +755,10 @@ VkFormat Device::GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags
// The wanted format is not supported by hardware, search for alternatives
const VkFormat* alternatives = GetFormatAlternatives(wanted_format);
if (alternatives == nullptr) {
- ASSERT_MSG(false,
- "Format={} with usage={} and type={} has no defined alternatives and host "
- "hardware does not support it",
- wanted_format, wanted_usage, format_type);
+ LOG_ERROR(Render_Vulkan,
+ "Format={} with usage={} and type={} has no defined alternatives and host "
+ "hardware does not support it",
+ wanted_format, wanted_usage, format_type);
return wanted_format;
}
@@ -769,10 +774,10 @@ VkFormat Device::GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags
}
// No alternatives found, panic
- ASSERT_MSG(false,
- "Format={} with usage={} and type={} is not supported by the host hardware and "
- "doesn't support any of the alternatives",
- wanted_format, wanted_usage, format_type);
+ LOG_ERROR(Render_Vulkan,
+ "Format={} with usage={} and type={} is not supported by the host hardware and "
+ "doesn't support any of the alternatives",
+ wanted_format, wanted_usage, format_type);
return wanted_format;
}
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h
index 4f3846345..701817086 100644
--- a/src/video_core/vulkan_common/vulkan_device.h
+++ b/src/video_core/vulkan_common/vulkan_device.h
@@ -665,6 +665,10 @@ public:
return properties.properties.limits.maxViewports;
}
+ u32 GetMaxUserClipDistances() const {
+ return properties.properties.limits.maxClipDistances;
+ }
+
bool SupportsConditionalBarriers() const {
return supports_conditional_barriers;
}
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp
index 70cf14afa..074aed964 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.cpp
+++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp
@@ -246,7 +246,9 @@ void SetObjectName(const DeviceDispatch* dld, VkDevice device, T handle, VkObjec
.objectHandle = reinterpret_cast<u64>(handle),
.pObjectName = name,
};
- Check(dld->vkSetDebugUtilsObjectNameEXT(device, &name_info));
+ if (dld->vkSetDebugUtilsObjectNameEXT) {
+ Check(dld->vkSetDebugUtilsObjectNameEXT(device, &name_info));
+ }
}
} // Anonymous namespace
@@ -377,6 +379,8 @@ const char* ToString(VkResult result) noexcept {
return "VK_OPERATION_DEFERRED_KHR";
case VkResult::VK_OPERATION_NOT_DEFERRED_KHR:
return "VK_OPERATION_NOT_DEFERRED_KHR";
+ case VkResult::VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR:
+ return "VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR";
case VkResult::VK_PIPELINE_COMPILE_REQUIRED_EXT:
return "VK_PIPELINE_COMPILE_REQUIRED_EXT";
case VkResult::VK_RESULT_MAX_ENUM:
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index fd6bebf0f..0836bcb7e 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -106,32 +106,30 @@ ConfigureGraphics::ConfigureGraphics(
Settings::values.bg_green.GetValue(),
Settings::values.bg_blue.GetValue()));
UpdateAPILayout();
- PopulateVSyncModeSelection(); //< must happen after UpdateAPILayout
+ PopulateVSyncModeSelection(false); //< must happen after UpdateAPILayout
// VSync setting needs to be determined after populating the VSync combobox
- if (Settings::IsConfiguringGlobal()) {
- const auto vsync_mode_setting = Settings::values.vsync_mode.GetValue();
- const auto vsync_mode = VSyncSettingToMode(vsync_mode_setting);
- int index{};
- for (const auto mode : vsync_mode_combobox_enum_map) {
- if (mode == vsync_mode) {
- break;
- }
- index++;
- }
- if (static_cast<unsigned long>(index) < vsync_mode_combobox_enum_map.size()) {
- vsync_mode_combobox->setCurrentIndex(index);
+ const auto vsync_mode_setting = Settings::values.vsync_mode.GetValue();
+ const auto vsync_mode = VSyncSettingToMode(vsync_mode_setting);
+ int index{};
+ for (const auto mode : vsync_mode_combobox_enum_map) {
+ if (mode == vsync_mode) {
+ break;
}
+ index++;
+ }
+ if (static_cast<unsigned long>(index) < vsync_mode_combobox_enum_map.size()) {
+ vsync_mode_combobox->setCurrentIndex(index);
}
connect(api_combobox, qOverload<int>(&QComboBox::activated), this, [this] {
UpdateAPILayout();
- PopulateVSyncModeSelection();
+ PopulateVSyncModeSelection(false);
});
connect(vulkan_device_combobox, qOverload<int>(&QComboBox::activated), this,
[this](int device) {
UpdateDeviceSelection(device);
- PopulateVSyncModeSelection();
+ PopulateVSyncModeSelection(false);
});
connect(shader_backend_combobox, qOverload<int>(&QComboBox::activated), this,
[this](int backend) { UpdateShaderBackendSelection(backend); });
@@ -147,8 +145,9 @@ ConfigureGraphics::ConfigureGraphics(
const auto& update_screenshot_info = [this, &builder]() {
const auto& combobox_enumerations = builder.ComboboxTranslations().at(
Settings::EnumMetadata<Settings::AspectRatio>::Index());
- const auto index = aspect_ratio_combobox->currentIndex();
- const auto ratio = static_cast<Settings::AspectRatio>(combobox_enumerations[index].first);
+ const auto ratio_index = aspect_ratio_combobox->currentIndex();
+ const auto ratio =
+ static_cast<Settings::AspectRatio>(combobox_enumerations[ratio_index].first);
const auto& combobox_enumerations_resolution = builder.ComboboxTranslations().at(
Settings::EnumMetadata<Settings::ResolutionSetup>::Index());
@@ -174,11 +173,7 @@ ConfigureGraphics::ConfigureGraphics(
}
}
-void ConfigureGraphics::PopulateVSyncModeSelection() {
- if (!Settings::IsConfiguringGlobal()) {
- return;
- }
-
+void ConfigureGraphics::PopulateVSyncModeSelection(bool use_setting) {
const Settings::RendererBackend backend{GetCurrentGraphicsBackend()};
if (backend == Settings::RendererBackend::Null) {
vsync_mode_combobox->setEnabled(false);
@@ -189,8 +184,9 @@ void ConfigureGraphics::PopulateVSyncModeSelection() {
const int current_index = //< current selected vsync mode from combobox
vsync_mode_combobox->currentIndex();
const auto current_mode = //< current selected vsync mode as a VkPresentModeKHR
- current_index == -1 ? VSyncSettingToMode(Settings::values.vsync_mode.GetValue())
- : vsync_mode_combobox_enum_map[current_index];
+ current_index == -1 || use_setting
+ ? VSyncSettingToMode(Settings::values.vsync_mode.GetValue())
+ : vsync_mode_combobox_enum_map[current_index];
int index{};
const int device{vulkan_device_combobox->currentIndex()}; //< current selected Vulkan device
@@ -214,6 +210,23 @@ void ConfigureGraphics::PopulateVSyncModeSelection() {
}
index++;
}
+
+ if (!Settings::IsConfiguringGlobal()) {
+ vsync_restore_global_button->setVisible(!Settings::values.vsync_mode.UsingGlobal());
+
+ const Settings::VSyncMode global_vsync_mode = Settings::values.vsync_mode.GetValue(true);
+ vsync_restore_global_button->setEnabled(
+ (backend == Settings::RendererBackend::OpenGL &&
+ (global_vsync_mode == Settings::VSyncMode::Immediate ||
+ global_vsync_mode == Settings::VSyncMode::Fifo)) ||
+ backend == Settings::RendererBackend::Vulkan);
+ }
+}
+
+void ConfigureGraphics::UpdateVsyncSetting() const {
+ const auto mode = vsync_mode_combobox_enum_map[vsync_mode_combobox->currentIndex()];
+ const auto vsync_mode = PresentModeToSetting(mode);
+ Settings::values.vsync_mode.SetValue(vsync_mode);
}
void ConfigureGraphics::UpdateDeviceSelection(int device) {
@@ -299,6 +312,33 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
} else if (setting->Id() == Settings::values.vsync_mode.Id()) {
// Keep track of vsync_mode's combobox so we can populate it
vsync_mode_combobox = widget->combobox;
+
+ // Since vsync is populated at runtime, we have to manually set up the button for
+ // restoring the global setting.
+ if (!Settings::IsConfiguringGlobal()) {
+ QPushButton* restore_button =
+ ConfigurationShared::Widget::CreateRestoreGlobalButton(
+ Settings::values.vsync_mode.UsingGlobal(), widget);
+ restore_button->setEnabled(true);
+ widget->layout()->addWidget(restore_button);
+
+ QObject::connect(restore_button, &QAbstractButton::clicked,
+ [restore_button, this](bool) {
+ Settings::values.vsync_mode.SetGlobal(true);
+ PopulateVSyncModeSelection(true);
+
+ restore_button->setVisible(false);
+ });
+
+ std::function<void()> set_non_global = [restore_button, this]() {
+ Settings::values.vsync_mode.SetGlobal(false);
+ UpdateVsyncSetting();
+ restore_button->setVisible(true);
+ };
+ QObject::connect(widget->combobox, QOverload<int>::of(&QComboBox::activated),
+ [set_non_global]() { set_non_global(); });
+ vsync_restore_global_button = restore_button;
+ }
hold_graphics.emplace(setting->Id(), widget);
} else if (setting->Id() == Settings::values.aspect_ratio.Id()) {
// Keep track of the aspect ratio combobox to update other UI tabs that need it
@@ -400,11 +440,7 @@ void ConfigureGraphics::ApplyConfiguration() {
func(powered_on);
}
- if (Settings::IsConfiguringGlobal()) {
- const auto mode = vsync_mode_combobox_enum_map[vsync_mode_combobox->currentIndex()];
- const auto vsync_mode = PresentModeToSetting(mode);
- Settings::values.vsync_mode.SetValue(vsync_mode);
- }
+ UpdateVsyncSetting();
Settings::values.vulkan_device.SetGlobal(true);
Settings::values.shader_backend.SetGlobal(true);
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h
index 9c24a56db..5c8286836 100644
--- a/src/yuzu/configuration/configure_graphics.h
+++ b/src/yuzu/configuration/configure_graphics.h
@@ -62,7 +62,8 @@ private:
void Setup(const ConfigurationShared::Builder& builder);
- void PopulateVSyncModeSelection();
+ void PopulateVSyncModeSelection(bool use_setting);
+ void UpdateVsyncSetting() const;
void UpdateBackgroundColorButton(QColor color);
void UpdateAPILayout();
void UpdateDeviceSelection(int device);
@@ -104,6 +105,7 @@ private:
QComboBox* api_combobox;
QComboBox* shader_backend_combobox;
QComboBox* vsync_mode_combobox;
+ QPushButton* vsync_restore_global_button;
QWidget* vulkan_device_widget;
QWidget* api_widget;
QWidget* shader_backend_widget;
diff --git a/src/yuzu/configuration/qt_config.cpp b/src/yuzu/configuration/qt_config.cpp
index a71000b72..6aca71d7c 100644
--- a/src/yuzu/configuration/qt_config.cpp
+++ b/src/yuzu/configuration/qt_config.cpp
@@ -348,43 +348,45 @@ void QtConfig::SaveQtPlayerValues(const std::size_t player_index) {
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
- WriteSetting(std::string(player_prefix).append(Settings::NativeButton::mapping[i]),
- player.buttons[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeButton::mapping[i]),
+ player.buttons[i], std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],
default_analogs[i][3], default_stick_mod[i], 0.5f);
- WriteSetting(std::string(player_prefix).append(Settings::NativeAnalog::mapping[i]),
- player.analogs[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeAnalog::mapping[i]),
+ player.analogs[i], std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeMotion::NumMotions; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_motions[i]);
- WriteSetting(std::string(player_prefix).append(Settings::NativeMotion::mapping[i]),
- player.motions[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeMotion::mapping[i]),
+ player.motions[i], std::make_optional(default_param));
}
}
void QtConfig::SaveDebugControlValues() {
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
- WriteSetting(std::string("debug_pad_").append(Settings::NativeButton::mapping[i]),
- Settings::values.debug_pad_buttons[i], std::make_optional(default_param));
+ WriteStringSetting(std::string("debug_pad_").append(Settings::NativeButton::mapping[i]),
+ Settings::values.debug_pad_buttons[i],
+ std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],
default_analogs[i][3], default_stick_mod[i], 0.5f);
- WriteSetting(std::string("debug_pad_").append(Settings::NativeAnalog::mapping[i]),
- Settings::values.debug_pad_analogs[i], std::make_optional(default_param));
+ WriteStringSetting(std::string("debug_pad_").append(Settings::NativeAnalog::mapping[i]),
+ Settings::values.debug_pad_analogs[i],
+ std::make_optional(default_param));
}
}
void QtConfig::SaveHidbusValues() {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
0, 0, default_ringcon_analogs[0], default_ringcon_analogs[1], 0, 0.05f);
- WriteSetting(std::string("ring_controller"), Settings::values.ringcon_analogs,
- std::make_optional(default_param));
+ WriteStringSetting(std::string("ring_controller"), Settings::values.ringcon_analogs,
+ std::make_optional(default_param));
}
void QtConfig::SaveQtControlValues() {
@@ -409,19 +411,20 @@ void QtConfig::SavePathValues() {
WriteCategory(Settings::Category::Paths);
- WriteSetting(std::string("romsPath"), UISettings::values.roms_path);
+ WriteStringSetting(std::string("romsPath"), UISettings::values.roms_path);
BeginArray(std::string("gamedirs"));
for (int i = 0; i < UISettings::values.game_dirs.size(); ++i) {
SetArrayIndex(i);
const auto& game_dir = UISettings::values.game_dirs[i];
- WriteSetting(std::string("path"), game_dir.path);
- WriteSetting(std::string("deep_scan"), game_dir.deep_scan, std::make_optional(false));
- WriteSetting(std::string("expanded"), game_dir.expanded, std::make_optional(true));
+ WriteStringSetting(std::string("path"), game_dir.path);
+ WriteBooleanSetting(std::string("deep_scan"), game_dir.deep_scan,
+ std::make_optional(false));
+ WriteBooleanSetting(std::string("expanded"), game_dir.expanded, std::make_optional(true));
}
EndArray();
- WriteSetting(std::string("recentFiles"),
- UISettings::values.recent_files.join(QStringLiteral(", ")).toStdString());
+ WriteStringSetting(std::string("recentFiles"),
+ UISettings::values.recent_files.join(QStringLiteral(", ")).toStdString());
EndGroup();
}
@@ -438,14 +441,14 @@ void QtConfig::SaveShortcutValues() {
BeginGroup(group);
BeginGroup(name);
- WriteSetting(std::string("KeySeq"), shortcut.keyseq,
- std::make_optional(default_hotkey.keyseq));
- WriteSetting(std::string("Controller_KeySeq"), shortcut.controller_keyseq,
- std::make_optional(default_hotkey.controller_keyseq));
- WriteSetting(std::string("Context"), shortcut.context,
- std::make_optional(default_hotkey.context));
- WriteSetting(std::string("Repeat"), shortcut.repeat,
- std::make_optional(default_hotkey.repeat));
+ WriteStringSetting(std::string("KeySeq"), shortcut.keyseq,
+ std::make_optional(default_hotkey.keyseq));
+ WriteStringSetting(std::string("Controller_KeySeq"), shortcut.controller_keyseq,
+ std::make_optional(default_hotkey.controller_keyseq));
+ WriteIntegerSetting(std::string("Context"), shortcut.context,
+ std::make_optional(default_hotkey.context));
+ WriteBooleanSetting(std::string("Repeat"), shortcut.repeat,
+ std::make_optional(default_hotkey.repeat));
EndGroup(); // name
EndGroup(); // group
@@ -460,9 +463,10 @@ void QtConfig::SaveUIValues() {
WriteCategory(Settings::Category::Ui);
WriteCategory(Settings::Category::UiGeneral);
- WriteSetting(std::string("theme"), UISettings::values.theme,
- std::make_optional(std::string(
- UISettings::themes[static_cast<size_t>(UISettings::default_theme)].second)));
+ WriteStringSetting(
+ std::string("theme"), UISettings::values.theme,
+ std::make_optional(std::string(
+ UISettings::themes[static_cast<size_t>(UISettings::default_theme)].second)));
SaveUIGamelistValues();
SaveUILayoutValues();
@@ -482,7 +486,7 @@ void QtConfig::SaveUIGamelistValues() {
BeginArray(std::string("favorites"));
for (int i = 0; i < UISettings::values.favorited_ids.size(); i++) {
SetArrayIndex(i);
- WriteSetting(std::string("program_id"), UISettings::values.favorited_ids[i]);
+ WriteIntegerSetting(std::string("program_id"), UISettings::values.favorited_ids[i]);
}
EndArray(); // favorites
@@ -506,14 +510,15 @@ void QtConfig::SaveMultiplayerValues() {
BeginArray(std::string("username_ban_list"));
for (std::size_t i = 0; i < UISettings::values.multiplayer_ban_list.first.size(); ++i) {
SetArrayIndex(static_cast<int>(i));
- WriteSetting(std::string("username"), UISettings::values.multiplayer_ban_list.first[i]);
+ WriteStringSetting(std::string("username"),
+ UISettings::values.multiplayer_ban_list.first[i]);
}
EndArray(); // username_ban_list
BeginArray(std::string("ip_ban_list"));
for (std::size_t i = 0; i < UISettings::values.multiplayer_ban_list.second.size(); ++i) {
SetArrayIndex(static_cast<int>(i));
- WriteSetting(std::string("ip"), UISettings::values.multiplayer_ban_list.second[i]);
+ WriteStringSetting(std::string("ip"), UISettings::values.multiplayer_ban_list.second[i]);
}
EndArray(); // ip_ban_list
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 059fcf041..c789c1e59 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -5342,6 +5342,10 @@ int main(int argc, char* argv[]) {
if (QString::fromLocal8Bit(qgetenv("DISPLAY")).isEmpty()) {
qputenv("DISPLAY", ":0");
}
+
+ // Fix the Wayland appId. This needs to match the name of the .desktop file without the .desktop
+ // suffix.
+ QGuiApplication::setDesktopFileName(QStringLiteral("org.yuzu_emu.yuzu"));
#endif
SetHighDPIAttributes();
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index 530e445f9..366e806d5 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -168,14 +168,6 @@ class GMainWindow : public QMainWindow {
/// Max number of recently loaded items to keep track of
static const int max_recent_files_item = 10;
- // TODO: Make use of this!
- enum {
- UI_IDLE,
- UI_EMU_BOOTING,
- UI_EMU_RUNNING,
- UI_EMU_STOPPING,
- };
-
enum {
CREATE_SHORTCUT_MSGBOX_FULLSCREEN_YES,
CREATE_SHORTCUT_MSGBOX_SUCCESS,
diff --git a/src/yuzu/multiplayer/direct_connect.cpp b/src/yuzu/multiplayer/direct_connect.cpp
index a415a953f..74da97e21 100644
--- a/src/yuzu/multiplayer/direct_connect.cpp
+++ b/src/yuzu/multiplayer/direct_connect.cpp
@@ -94,7 +94,7 @@ void DirectConnectWindow::Connect() {
// Store settings
UISettings::values.multiplayer_nickname = ui->nickname->text().toStdString();
UISettings::values.multiplayer_ip = ui->ip->text().toStdString();
- if (ui->port->isModified() && !ui->port->text().isEmpty()) {
+ if (!ui->port->text().isEmpty()) {
UISettings::values.multiplayer_port = ui->port->text().toInt();
} else {
UISettings::values.multiplayer_port = UISettings::values.multiplayer_port.GetDefault();
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
index 5153cdb79..1a35d471c 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
@@ -20,7 +20,7 @@ EmuWindow_SDL2::EmuWindow_SDL2(InputCommon::InputSubsystem* input_subsystem_, Co
: input_subsystem{input_subsystem_}, system{system_} {
input_subsystem->Initialize();
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER) < 0) {
- LOG_CRITICAL(Frontend, "Failed to initialize SDL2! Exiting...");
+ LOG_CRITICAL(Frontend, "Failed to initialize SDL2: {}, Exiting...", SDL_GetError());
exit(1);
}
SDL_SetMainReady();
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
index 9ed47d453..8b916f05c 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
@@ -28,7 +28,8 @@ EmuWindow_SDL2_VK::EmuWindow_SDL2_VK(InputCommon::InputSubsystem* input_subsyste
SDL_SysWMinfo wm;
SDL_VERSION(&wm.version);
if (SDL_GetWindowWMInfo(render_window, &wm) == SDL_FALSE) {
- LOG_CRITICAL(Frontend, "Failed to get information from the window manager");
+ LOG_CRITICAL(Frontend, "Failed to get information from the window manager: {}",
+ SDL_GetError());
std::exit(EXIT_FAILURE);
}
diff --git a/src/yuzu_cmd/sdl_config.cpp b/src/yuzu_cmd/sdl_config.cpp
index 39fd8050c..e81bf5d45 100644
--- a/src/yuzu_cmd/sdl_config.cpp
+++ b/src/yuzu_cmd/sdl_config.cpp
@@ -213,43 +213,45 @@ void SdlConfig::SaveSdlPlayerValues(const std::size_t player_index) {
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
- WriteSetting(std::string(player_prefix).append(Settings::NativeButton::mapping[i]),
- player.buttons[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeButton::mapping[i]),
+ player.buttons[i], std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],
default_analogs[i][3], default_stick_mod[i], 0.5f);
- WriteSetting(std::string(player_prefix).append(Settings::NativeAnalog::mapping[i]),
- player.analogs[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeAnalog::mapping[i]),
+ player.analogs[i], std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeMotion::NumMotions; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_motions[i]);
- WriteSetting(std::string(player_prefix).append(Settings::NativeMotion::mapping[i]),
- player.motions[i], std::make_optional(default_param));
+ WriteStringSetting(std::string(player_prefix).append(Settings::NativeMotion::mapping[i]),
+ player.motions[i], std::make_optional(default_param));
}
}
void SdlConfig::SaveDebugControlValues() {
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
- WriteSetting(std::string("debug_pad_").append(Settings::NativeButton::mapping[i]),
- Settings::values.debug_pad_buttons[i], std::make_optional(default_param));
+ WriteStringSetting(std::string("debug_pad_").append(Settings::NativeButton::mapping[i]),
+ Settings::values.debug_pad_buttons[i],
+ std::make_optional(default_param));
}
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],
default_analogs[i][3], default_stick_mod[i], 0.5f);
- WriteSetting(std::string("debug_pad_").append(Settings::NativeAnalog::mapping[i]),
- Settings::values.debug_pad_analogs[i], std::make_optional(default_param));
+ WriteStringSetting(std::string("debug_pad_").append(Settings::NativeAnalog::mapping[i]),
+ Settings::values.debug_pad_analogs[i],
+ std::make_optional(default_param));
}
}
void SdlConfig::SaveHidbusValues() {
const std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
0, 0, default_ringcon_analogs[0], default_ringcon_analogs[1], 0, 0.05f);
- WriteSetting(std::string("ring_controller"), Settings::values.ringcon_analogs,
- std::make_optional(default_param));
+ WriteStringSetting(std::string("ring_controller"), Settings::values.ringcon_analogs,
+ std::make_optional(default_param));
}
std::vector<Settings::BasicSetting*>& SdlConfig::FindRelevantList(Settings::Category category) {